IBM Websphere MQ常用命令及常見錯誤


MQSC: MQ Script Command  (不區分大小寫)

注明: 下面命令行中的隊列管理器名字隊列名字分別用QmgrName, QName替代。

下面標藍色的,都需要根據實際配置更改!

 

打開MQ的對象管理,運行MQSeries命令 (打開cmd窗口,運行下面的命令)

  runmqsc QmgrName

end 命令結束MQSC窗口。

 

常用的MQ命令有: define (等價於def)、display (等價於dis)、alter、set、ping

在MQSC窗口中,直接輸入上面的命令,會有相應提示。

 

ql (等價於qlocal)、qr(等價於qremote)、chl(等價於channel)、

 

定義語句:

1. 創建隊列管理器

  crtmqm [option] QmgrName

  常用選項:

  [-q]、[-d DefXmitQ]、[-u DeadQ]

  -q,表示創建缺省隊列管理器,一台機器最多只能有一個缺省隊列管理器。

  -d,表示指明隊列管理器的缺省傳輸隊列。

  -u,表示指明隊列管理器的死信隊列。

下面的REPLACE表示替換,因此下面的語句可以重復運行;DEFPSIST(YES)代表持久化;

2. 定義本地隊列

  DEFINE QLOCAL(QName) DEFPSIST(YES) PUT(ENABLE) GET(ENABLE) REPLACE

3. 定義遠程隊列

  DEFINE QREMOTE(QName) RNAME(遠程隊列名) RQMNAME(遠程隊列管理器名) XMITQ(傳輸隊列名) DEFPSIST(YES) REPLACE

4. 定義本地傳輸隊列

  DEFINE QLOCAL(QName) USAGE(XMITQ) DEFPSIST(YES) PUT(ENABLE) GET(ENABLE) TRIGGER TRIGTYPE(EVERY) TRIGDATA(sdrChannel) INITQ(SYSTE.CHANNEL.INITQ) PROCESS(PROCESSNAME) REPLACE 

5. 定義死信隊列

  DEFINE QLOCAL(QName) DEFPSIST(YES) REPLACE

6. 定義進程

  DEFINE PROCESS(PRONAME) DESCR('STRING') APPLTYPE(WINDOWSNT) APPLICID('runmqchl -c sdr_chl -m QmgrName')

  其中APPLTYPE的值可以是:CICS、UNIX、WINDOWS、WINDOWSNT等

7. 設定隊列管理器的死信隊列

  ALTER QMGR DEADQ(deadQName)

下面的CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。

8. 創建服務器連接通道

  DEFINE CHANNEL(chlName) CHLTYPE(SVRCONN) MCAUSER('MUSR_MQADMIN') TRPTYPE(TCP) REPLACE

9. 創建發送方通道

  DEFINE CHANNEL(chlName) CHLTYPE(SDR) CONNAME(127.0.0.1(1010)) XMITQ(傳輸隊列名) TRPTYPE(TCP) REPLACE

10. 創建接收方通道

  DEFINE CHANNEL(chlName) CHLTYPE(RCVR) TRPTYPE(TCP) REPLACE

11. 定義偵聽器

  DEFINE LISTENER(listenerName) TRPTYPE(TCP) CONTROL(QMGR) PORT(port) REPLACE

12. 運行偵聽器

  START LISTENER(listenerName)

 

啟動、停止、刪除語句:

1. 啟動隊列管理器

  strmqm QmgrName

2. 停止隊列管理器

  endmqm QmgrName

3. 刪除隊列管理器

  dltmqm QmgrName

4.  啟動通道

  runmqchl -c chlName -m QmgrName

  START CHANNEL(channelName)

5. 啟動偵聽

  runmqlsr -t TYPE -p PORT -m QmgrName

  START LISTENER(listenerName)

6. 停止偵聽

  runmqlsr  -m QmgrName

7. 刪除隊列

  DELETE QLOCAL (QName)

  DELETE QREMOTE (QRName)

 

查詢顯示語句:

1. 顯示隊列管理器,以及當前狀態

  dspmq

2. 顯示隊列管理器的所有屬性(也可以指定具體某一個屬性)

  DISPLAY QMGR ALL

3. 顯示隊列的所有屬性

  DISPLAY QUEUE (QName) ALL

4. 顯示隊列的所選屬性

  DISPLAY QUEUE (QName) DESCR GET PUT

  DISPLAY QUEUE (QName) MAXDEPTH CURDEPTH

5. 顯示進程定義

  DISPLAY PROCESS(PRONAME

6. 顯示文件名

  dspmqfls

7. 顯示通道的所有屬性(也可以指定具體某一個屬性)

  DISPLAY CHANNEL (chlName) ALL

8. 顯示該IBM MQ軟件的版本號及安裝信息

  dspmqver

 

操作及修改語句:

1. 往隊列中放消息

  amqsput QName QmgrName

  如果隊列是默認隊列管理器中的隊列,可以不帶其隊列管理器的名字

2. 從隊列中取出消息

  amqsget QName QmgrName

  如果隊列是默認隊列管理器中的隊列,可以不帶其隊列管理器的名字

3. 清除隊列中的所有消息

  CLEAR QLOCAL (QName)

4. 修改channel的認證信息

  SET CHAUTH(*) TYPE(BLOCKUSER) USERLIST('nobody', '*MQADMIN')

  解釋:把當前的blockuser(*MQADMIN)修改為nobody

 

參考鏈接:具體可以到IBM官網看developer center

https://www.ibm.com/developerworks/cn/websphere/library/techarticles/loulijun/0402_mqsysm/mqsysm.html

MQ 7.5 官方網站資料

 


 

常見錯誤代碼

Reason Code: 2035      

  錯誤大概意思是: 此用戶沒有連接權限

  原因1:server connetion channel上沒有配置MACUSER 用戶標識, 如MUSR_MQADMIN; 一定要確保MUSR_MQADMIN用戶為mqm組的成員。

  方法1:在服務器端的服務連接通道定義中設置MCAUSER屬性的值為MUSR_MQADMIN,  或者通過修改實現。

  方法2: 

  若保持MQ服務器端的通道定義的MCAUSER屬性值為缺省值,即為空,則可將MQ客戶端所使用的用戶添加
  到MQ服務器所在的操作系統中。
  例如,若MQ客戶端使用的用戶為ADMIN,則在MQ服務器端添加用戶ADMIN,並保證此用戶在MQ服務器端的mqm組中,以及有執行隊列管理器上的操作所必需的權限。

Reason Code: 2059

  首先,需要確定隊列管理器的端口,是運行的,代碼中配置的也是一樣的;還有就是檢查CCSID的值,隊列管理器和代碼中的配置是否一致。

https://www.cnblogs.com/siwei1988/p/5923038.html

http://blog.csdn.net/VincentLee_/article/details/17012761


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM