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

posted @ 2017-04-17 22:23  无涯的风  阅读(4586)  评论(0编辑  收藏  举报