一、常用命令
以下队列名统称: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配置信息
配置信息:
根目录的(mq配置文件) (队列管理器配置文件,它的属性仅影响某个队列管理器,在节点中的每个队列管理器都有一个,所在目录 ./pmts/qmgrs/QMUMBFEA/)
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() 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( (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 |
四、项目修改地址(修改地址与重新建立通道 )
nuix_sys_tips
cd MQDeploy
vim 查看修改自己的IP和端口以及发送远程地址的IP和端口
修改后
1.查看队列:dspmq
2.查看队列管理器的运行状态:
runmqsc 队列名
dis chs(*)
3.停止队列管理器:
endmqm –i QmgrName 立即停止
或者
endmqm –p QmgrName 强制停止
4.删除队列管理器:
删除队列管理器
dltmqm 队列名
执行脚本之后就会新建出新的队列管理器
然后重新启动队列管理器
start chl(队列名)