轉載自: http://yrandy.iteye.com/blog/1274964服務器
--查看MQ版本--併發
dspmqvertcp
--查看隊列狀態--
dspmq測試
--建立隊列管理器--
crtmqm -q ECIS_QMunix
--刪除隊列管理器--
dltmqm ECIS_QMblog
--啓動隊列管理器--
strmqm ECIS_QM隊列
--關閉隊列管理器--
endmqm -i ECIS_QM 當即中止
endmqm -p ECIS_QM 強制中止進程
--運行隊列管理器--
runmqsc ECIS_QMip
--定義監聽器--
DEFINE LISTENER(LSR_4_ECIS_QM) TRPTYPE(TCP) PORT(1616) CONTROL(QMGR) REPLACE
START LISTENER(LSR_4_ECIS_QM)rem
--定義通道--
DEFINE CHANNEL(ECIS.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm') REPLACE
--啓動通道--
runmqchl –c ChlName –m ECIS_QM
--啓動偵聽--
runmqlsr –t TCP –p 1616 –m ECIS_QM
endmqlsr -m ECIS_QM
--定義隊列--
DEFINE QL(Q_SVC2ADP_4_TELNET) REPLACE
DEFINE QL(Q_SVC2ADP_4_JDBC) REPLACE
DEFINE QL(Q_SVC2ADP_4_HTTP) REPLACE
DEFINE QL(Q_SVC2ADP_4_SOCKET) REPLACE
--刪除隊列--
delete QL(Q_SVC2ADP_4_TELNET)
--查看監聽器--
display listener (LSR_4_ECIS_QM)
--查看通道--
dis chs(*)
--查看通道--
display ql(*) [all]
--查看隊列深度--
display ql(Q_SVC2ADP_4_HTTP) curdepth
--清除隊列消息--
clear ql(Q_SVC2ADP_4_HTTP)
--查看CCSID--
display qmgr all
--修改CCSID--
ALTER QMGR [FORCE] CCSID(5488)
邏輯定義
##################################################
./JMSAdmin
DELETE QCF(T_ECIS_QCF)
DELETE Q(T_ECIS_Q_SVC2ADP_TELNET)
DELETE Q(T_ECIS_Q_ADP2SVC_TELNET)
DELETE Q(T_ECIS_Q_SVC2ADP_JDBC)
DELETE Q(T_ECIS_Q_ADP2SVC_JDBC)
DELETE Q(T_ECIS_Q_SVC2ADP_HTTP)
DELETE Q(T_ECIS_Q_ADP2SVC_HTTP)
DELETE Q(T_ECIS_Q_SVC2ADP_SOCKET)
DELETE Q(T_ECIS_Q_ADP2SVC_SOCKET)
DEFINE QCF(T_ECIS_QCF) DESC() TRAN(CLIENT) HOST(10.151.128.13) QMGR(T_ECIS_QM) CHAN(T_ECIS.SVRCONN) PORT(2626) CCSID(5488)
DEFINE Q(T_ECIS_Q_SVC2ADP_TELNET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_TELNET) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_TELNET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_TELNET) CCSID(5488)
DEFINE Q(T_ECIS_Q_SVC2ADP_JDBC) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_JDBC) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_JDBC) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_JDBC) CCSID(5488)
DEFINE Q(T_ECIS_Q_SVC2ADP_HTTP) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_HTTP) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_HTTP) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_HTTP) CCSID(5488)
DEFINE Q(T_ECIS_Q_SVC2ADP_SOCKET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_SOCKET) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_SOCKET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_SOCKET) CCSID(5488)
WebSphere MQ經常使用命令及配置
##################################################
//建立本地隊列Q
DEFINE QLOCAL (Q)
//將本地隊列Q 的最大深度設置爲5
ALTER QLOCAL (Q) MAXDEPTH(5)
//從新建立本地隊列Q 若是Q已經存在,則將其所有屬性重置爲缺省屬性
DEFINE QLOCAL (Q) REPLACE
//建立遠程隊列
DEFINE QREMOTE(QRNAME) RNAME(AAA) RQMNAME(QMGRNAME) XMITQ(QTNAME)
//建立傳輸隊列
define qlocal(CLV_HQ_TRAN) usage(xmitq) INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(REV_CLV) TRIGTYPE(EVERY) TRIGGER REPLACE
//建立接收端通道C
DEFINE CHANNEL(C) CHLTYPE(RCVR)
//建立發送方通道C ,鏈接對方的IP爲10.10.10.10 端口爲1414 通道鏈接的傳輸隊列爲XQ
DEFINE CHANNEL(C) CHLTYPE(SDR) CONNAME(’10.10.10.10 (1414)’) XMITQ(XQ)
//建立請求方通道
DEFINE CHANNEL(D) CHLTYPE(RQSTR) CONNAME(’10.10.10.10 (1414)’)
//建立服務器通道
DEFINE CHANNEL (D) CHLTYPE(SVR) xmitq (XQ1)
//建立服務器鏈接通道
DEFINE CHANNEL(E) CHLTYPE(SVRCONN) REPLACE
//顯示全部遠程隊列
display qremote (*)
//顯示全部通道
Display channel (*)
//定義死信隊列
DEFINE QLOCAL(QUEUE) DEFPSIST(YES) REPLACE
//設定隊列管理器的死信隊列
ALTER QMGR DEADQ(QUEUE)
設置MaxChannels和MaxActiveChannels屬性(最大鏈接數)
##################################################
MaxChannels和MaxActiveChannels分別表明隊列管理器容許配置的通道的最大個數和容許同時運行的通道的個數,MaxChannels的缺省值是100,MaxActiveChannels的缺省值與MaxChannels相同。若是您的併發通道鏈接個數超過了100,您須要修改這兩個參數。這對於大併發的Client/Server間通信尤其重要。
在unix平臺,修改qm.ini文件,添加以下所示(路徑:/var/mqm/qmgrs/HQ_SVR):
Channels:
MaxChannels = 3000 (最大通道數)
MaxActiveChannels = 3000 (最大活動通道數)
PipeLineLength=2
AdoptNewMCA=ALL
而後重啓MQ
//定義持久性隊列:
DEFINE QLOCAL(QNAME) DEFPSIST (YES) REPLACE
傳輸隊列管理
##################################################
1:定義傳輸隊列
DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ)
注:
Q_TRANSFER:傳輸隊列名
下面定義一個輸入隊列並帶觸發器
DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ) DEFPSIST(YES) INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(DP_RCHANNEL) REPLACE
注:
參數1:傳輸隊列名稱(Q_TRANSFER)
參數5:觸發器數據(DP_RCHANNEL),也就是觸發後要啓動的通道。
2:在傳輸入隊列上定義觸發器
DPCIS_Q_TRANSFER:傳輸隊列
觸發器數據:DP_RCHANNEL,即:發送通道,觸發時啓動該通道
alter qlocal(DPCIS_Q_TRANSFER) TRIGDATA('DP_RCHANNEL') TRIGTYPE(every) TRIGGER initq('SYSTEM.CHANNEL.INITQ')
遠程隊列管理
##################################################
經過輸入如下命令來定義遠程隊列定義:
define qremote(Q1) rname(Q1) rqmname(QM_APPLE) xmitq(QM_APPLE)
注:
參數1:隊列名稱(發送方遠程隊列名)
參數2:遠程隊列(接收方的本地接收隊列名)
參數3:遠程隊列管理器(接收方隊列管理器名)
參數4:傳輸隊列(發送方傳輸隊列名)
通道管理
##################################################
1:建立接收方通道
DEFINE CHANNEL(SDR_ TEST) CHLTYPE(RCVR) REPLACE
define channel(Q_R_CHANNEL2) chltype(RCVR) replace
注:
參數1:接收方通道名稱
replace:表示有該通道了替換
2:建立發送方通道
DEFINE CHANNEL(SDRNAME) CHLTYPE(SDR) CONNAME (‘100.100.100.215(1418)’) XMITQ(QTNAME) REPLACE
其中CHLTYPE能夠是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。
define channel(DP_RCHANNEL) chltype(SDR) conname('10.101.2.3 (1414)') xmitq(Q_TRANSFER) replace
注:
通道名稱:DP_RCHANNEL (發送方通道的名稱)
傳輸隊列:Q_TRANSFER (發送方傳輸隊列的名稱)
3:啓動通道
start channel(QM_ORANGE.QM_APPLE)
4:查看通道狀態
dis chs(*)
偵聽器管理
##################################################
1:定義偵聽器
DEFINE LISTENER(TCPLS1) TRPTYPE(TCP) PORT(1414) REPLACE
2:啓動偵聽器
start listener(TCPLS1)
3:顯示偵聽器信息
display listener(tcpls1)
建立觸發
##################################################
通常設置MQ觸發器的目的有兩種, 一是自動啓動發送端通道, 二是監視隊列消息, 一旦發現新的消息, 則利用觸發器啓動相應的處理進程
若是是利用觸發器自動啓動發送端通道, 使用方法1, 若是是利用觸發器啓動用戶進程, 使用方法2
方法1
A 在傳輸通道上設置觸發器, 打開觸發器控制, 類型爲"第一個"
B 初始隊列爲SYSTEM.CHANNEL.INITQ, 該隊列爲MQ專用的通道啓動隊列, 不須要手工啓動其觸發監視器
C 觸發器數據爲發送端通道名稱, 例如 QAG.50
D 在發送端通道不活動的狀況下, 在傳輸通道放入消息測試
方法2
A 建立一個觸發啓動隊列, 其模板爲SYSTEM.DEFAULT.INITIATION.QUEUE
runmqsc
define qlocal (MQ.TRIGER.INIQUEUE) like (SYSTEM.DEFAULT.INITIATION.QUEUE)
B 定義進程 所謂進程就是觸發器要觸發的程序本例中進程名稱:TRIGER.PROGRAM 應用程序標識爲:"Notepad.exe"
C 在隊列上設置觸發器, 通常爲本地隊列, 打開觸發器控制, 類型根據本身的須要選擇"第一個", "每一個" 仍是 "根據消息數量"
D 初始隊列選擇A中建立的觸發啓動隊列, 例如MQ.TRIGER.INIQUEUE, 進程名稱設置爲B中定義的進程名稱, 例如TRIGER.PROGRAM
E 啓動觸發監視器 runmqtrm -m QAGWY -q MQ.TRIGER.INIQUEUE
F 在本地隊列放入消息進行測試
方法2也能夠完成方法1的工做, 只須要將進程定義中的應用程序標識改成 runmqchl -m QAGWY -c QAG.50 就能夠了, 但MQ中提供了專用的通道啓動隊列,而該隊列不須要手工啓動觸發監視器, 所以方法1比方法2的步驟要少, 配置也簡單, 因此在利用觸發器自動啓動發送端通道的狀況下, 仍是方法1更好.