当前位置:   article > 正文

MQ命令使用

MQ命令使用

一、常用命令

以下队列名统称:qmgrname

1.查看MQ版本:dspmqver

2.创建mq: crtmqm -q qmgrname
-q是指创建缺省的队列管理器

3.显示队列管理器: dspmq

4.启动mq: strmqm qmgrname

5.停止mq: endmqm qmgrname 受控停止
endmqm -i qmgrname 立即停止(常用此命令停止mq)
endmqm -p qmgrname 强制停止

6.删除mq: dltmqm qmgrname
== 如果删除报错AMQ8041: 根据报错的"Process 10779 is still running."查找运行的进程,kill掉之后再重新删除==

7.进入队列管理器控制台: runmqsc qmgrname

8.显示通道状态 :dis chs(*) --需在队列管理器中执行

9.显示通道 :dis chl(*) --需在队列管理器中执行

10.查看所有属性: dis q(*) --需在队列管理器中执行

11.停止通道:stop chl(通道名) --需在队列管理器中执行

12.启动通道:start chl(通道名) --需在队列管理器中执行
13. 重置序列(可不用后面的seqnum): reset chl(323333000013.1100.O1) seqnum(5) --需在队列管理器中执行
14. mq错误日志:var/mqm/qmgrs/qmname/errors
15. 查看队列深度: display ql(Q_SVC2ADP_4_HTTP) curdepth
16. 往队列中放消息 :amqsput QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字

17.从队列中取出消息 :amqsget QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字

18.清除队列中的所有消息:CLEAR QLOCAL(QNAME)

19.启动通道:runmqchl –c ChlName –m QmgrName(ChlName 为通道名称、QmgrName为队列名称、例:执行命令runmqchl -c 402100000010.0110.O1 -m QM_TIPS_402100000010_01 &)

20.启动侦听:runmqlsr –t TYPE –p PORT –m QMgrName

21.停止侦听:endmqlsr -m QmgrName (QmgrName 为队列名称)

22.查看端口:ps -ef |grep GCP_QM

二、MQ配置信息

1.mq配置信息:

根目录的mqs.ini(mq配置文件) qm.ini(队列管理器配置文件,它的属性仅影响某个队列管理器,在节点中的每个队列管理器都有一个qm.ini,所在目录 ./pmts/qmgrs/QMUMBFEA/qm.ini)

2.属性:

DESCR:描述
MAXMSGL:消息大小
队列管理器MAXMSGL,默认值:4M,可以调整范围:32K - 100M;
通道MAXMSGL,默认值:4M,可以调整范围:0-队列管理器MAXMSGL;
队列MAXMSGL,默认值:4M,可以调整范围:0-队列管理器MAXMSGL;
使用alter命令,即可对其MAXMSGL进行修改。
三者之间的关系:
队列管理器MAXMSGL>=队列MAXMSGL;
通道MAXMSGL:
队列MAXMSGL:仅对本地队列和模型队列有效,表示队列中可以容纳的最大消息长度,这个属性的调整范围在各个平台上的上限是不一样的。通道在建立 的时候会有一个握手过程,双方会交换各自通道定义上的MAXMSGL,最后协商出通道使用的最大消息长度,一般会取双方定义中较小的那一个。

三、常见问题

1.启动mq通道报错如下信息,为CCSID错误

The local and remote queue managers do not agree on the next message sequence
number. A message with sequence number 214 has been sent when sequence number
使用命令重置CCSID可行reset chl(MBA.MBFEA) seqnum(819)

2.启动通道后发现有sequence报错,则需重置通道序列
3.进入队列之后使用dis chs(*) 通道无状态

解决办法:执行dis chl(*) 查看到所有的通道
然后启动所需的通道发送通道 start chl(通道名)
若接入通道无状态,需发送方尝试重启一下通道

4.通道状态STATUS(RETRYING)的问题分析与解决方法

这种问题一般发送在发送端,在我们发出启动通道的命令之后,通道进入binding的状态,若网络连接畅通并且通道定义正确,它进入正常running状态,如果出现了如下的一些问题,则通道进入retrying状态。
检查通道状态示例
$ runmqsc QMgrName
dis chs©
AMQ8417: Display Channel Status details.
CHANNEL© XMITQ(QX)
CONNAME(xxx.xxx.xxx.xxx (1416)) CURRENT
CHLTYPE(SDR) STATUS(RETRYING)

原因解决方法
网络连接有问题检查通道定义包括网络不通,可使用 telnet 端口 测试连接
通道定义不正确检查通道配置,检查方法: $ runmqsc QMgrNamedis chl(ChannelName)
通道两端的消息序列号(Message Sequence Number)不匹配重置序列(可参考上面重置方法)
通道定义中的CONNAME(HostName (PortNumber))使用了主机名但是hosts文件中没有定义检查通道定义,检查方法:
$ runmqsc QMgrName
dis chl(ChannelName)
检查其中CONNAME是否使用了主机名,如果使用了,请检查/etc/hosts文件中是否有其定义。
接收方不能连通
接收端没有启动监听
a检查方法:MQSC 中的测试通道命令PING,格式如下:
$ runmqsc QMgrName
PING CHANNEL(channel_name) [DATALEN( 16
接收端端口占用(比如其它队列管理器占用了该端口)接收端相应的队列管理器停止监听,然后检查端口是否还在监听:
$ netstat -an

四、项目修改地址(修改地址与重新建立通道 unix.tar.gz)

1.cd nuix_sys_tips
cd MQDeploy
vim MQDeploy.sh 查看修改自己的IP和端口以及发送远程地址的IP和端口
修改后
1.查看队列:dspmq
2.查看队列管理器的运行状态:
runmqsc 队列名
dis chs(*)
3.停止队列管理器:
endmqm –i QmgrName 立即停止
或者
endmqm –p QmgrName 强制停止
4.删除队列管理器:
删除队列管理器
dltmqm 队列名
执行脚本MQDeploy.sh之后就会新建出新的队列管理器
然后重新启动队列管理器
start chl(队列名)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/632834
推荐阅读
相关标签
  

闽ICP备14008679号