MQ常用命令

合集下载

MQ常用命令

MQ常用命令

MQ常用命令以下为MQ常用命令:查看发送通道:display channel(xxx)查看队列管理器: dspmq停止队列管理器:endmqm QMEMBFE删除队列管理器:dltmqm QMEMBFE重置发送通道:reset channel(xxxx)启动通道:start chl(xxxx)查看通道: dis chl(xxx)查看所有通道 dis chl(*) 或 dis chs(*)查看所有监听:dis listener(*) 或 dis lsstatu(listentName)查看本地队列:dis qlocal(xxxxx) 查看其中的CURDEPTH(0),若其>0,则说明本地队列堵塞查看死信队列:dis qlocal(DEADQ)查看本地队列:dis qlocal(*)查看本地队列深度: display ql(xxx) curdepth查看远程队列深度:display qr(xxx) curdepth查看ccsid: display qmgr all显示所有远程队列: display qremote(*)显示所有通道: display channel(*)ping通道:ping CHANNEL(xxxx)清空队列内容:clear Qlocal(Qname)(需运行 runmqsc)删除队列:delete qlocal(Qname)更改监听:alter listener(xxxx) TRPTYPE(TCP) PORT(1417) CONTROL(QMGR)停止监听: end LISTENER(xxxx)查看通道当前序列号: dis chs(xxxx) curseqno查看通道所有状态: dis chs(xxxxx) all。

mq命令

mq命令
TRIGDPTH(1) TRIGMPRI(0)
QDEPTHHI(80) QDEPTHLO(20)
QDPMAXEV(ENABLED) QDPHIEV(DISABLED)
XMITQ(QT_NT)
创建发送方通道,其传输队列为QT_NT,远程主机地址为10.10.10.2,侦听端口为1414
DEFINE CHANNEL(SDR_NT) CHLTYPE(SDR)+
CONNAME(‘10.10.10.2(1414)’) XMITQ(QT_NT) REPLACE
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字
启动通道
runmqchl –c ChlName –m QmgrName
启动侦听
runmqlsr –t TYPE –p PORT –m QMgrName
停止侦听
endmqlsr -m QmgrName
MQSeries命令
8.退出命令行使用 end 命令。

一.MQ基本操作
MQ中有几个很重要的组件:队列管理器(QueueManager)、队列(Queue)和通道(Channel)。其基本的操作方法如下:
创建队列管理器
crtmqm –q QMgrName
-q是指创建缺省的队列管理器
删除队列管理器
远程队列定义
DEFINE QREMOTE(QRNAME) +
RNAME(AAA) RQMNAME(QMGRNAME) +
XMITQ(QTNAME)
定义模型队列
DEFINE QMODEL(QNAME) DEFTYPE(TEMPDYN)
定义本地传输队列

mq操作命令

mq操作命令

1. 启动命令行QMEMBFE是QM名字runmqsc QMEMBFE (进入MQ的命令行)显示队列DISPLAY QUEUE(*)显示通道DISPLAY CHANNEL(*)显示侦听器DISPLAY LISTENER(*)SDR发送方通道,RCVR接收方通道2. 创建MQMcrtmqm -lf 16384 -lp 10 -ls 10 QMEMBFE3. 启动MQMstrmqm QMEMBFE3.1删除MQMDltmqm QMEMBFEStart chl(通道名) 启动通道4. 运行脚本runmqsc QMEMBFE < mbfemq.sc5. 确定测试商业银行所对应接入点的通道状态是否为running#runmqsc QMEMBFEdis chs(5012900001.GW2900)dis chs(GW2900.5012900001)dis chstatus(ChannelName) 查看通道状态dis chs(5012900001.GW2900)1 : dis chs(5012900001.GW2900)AMQ8420: 通道状态未找到。

dis chs(GW2900.5012900001)2 : dis chs(GW2900.5012900001)AMQ8417: 显示通道状态细节。

CHANNEL(GW2900.5012900001) CHLTYPE(RCVR)CONNAME(172.26.190.4) CURRENTRQMNAME(QME2900) STATUS(RUNNING) SUBSTATE(RECEIVE) XMITQ( )172.26.190.4 14181. 创建队列管理器crtmqm -q QMA(-q表示QMA为默认队列管理器)2. 启动队列管理器strmqm QMA(对于默认队列管理器,则为strmqm )Q 3. 启动管理器平台runmqsc QMA4. 定义本地队列define qlocal(queueA)若用于队列管理器之间进行通信,这应为define qlocal(queue1) usage(xmitq)5. 定义远程队列define qremote(queue.remote) rname(.queue)rqmname(queueB)xmitq(queue1)(.queue为远程队列管理器queueB中的本地队列)6. 定义发送端通道define channel(queueA.queueB)chltype(sdr)conname(192.168.1.90(1414)) xmitq(queueA)trptype(tcp)7. 定义接受方通道define channel(queueA.queueB) chltype(rcvr) trptype(tcp)8. 更改侦听端端口号alter listener(system.default.listener.tcp)trptype(tcp)port(1415)9. 启动侦听start listener(system.default.listener.tcp)在命令行c:\runmqlsr10. 列出侦听状态display lsstatus(*)11. 测试,向队列中放入消息amqsput queue_name queue_manager_name从队列中取出消息amqsget queue_name queue_manager_name12. 在服务器方建立用于客户方链接的通道define channel(channel2) chltype(svrconn) trptype(tcp)mcauser()13. 在客户机方,使用MQSERVER定义客户机链接通道(如使用了ActiveDirectory服务支持,则可略过本步骤)SET MQSERVER=CHANNEL1/TCP/192.168.1.90(1414) //Windowsexport MQSERVER=’CHANNEL1/TCP/server-hostname(port)’//linux15. 测试,向队列中放入消息amqsputc queue_name queue_manager_name从队列中取出消息amqsgetc queue_name queue_manager_name16. 关闭队列管理器endmqm mqm_nameendmqm -i mqm_name17. 结束所有侦听进程endmqlsr -m mqm_name18. 查看WebSphere MQ版本号dspmqver19. 查看已有的MQ管理器dspmq20. 启动WebSphere MQ Explorerstrmqcfg21.查看通道的消息序列DIS CHS(CHANNEL_NAME) CURSEQNO;。

IBMMQ常用命令

IBMMQ常用命令

IBMMQ常用命令IBM MQ是一款广泛应用于企业级应用程序开发和数据传输的消息队列软件。

该软件具有出色的可扩展性和稳定性,可满足不同规模和需求的企业应用场景。

为了更好地管理和操作IBM MQ,下面将介绍IBMMQ常用命令。

1. crtmqm命令crtmqm命令是创建IBM MQ队列管理器的命令。

例如,要创建一个名为QMGR1的队列管理器,我们可以使用以下命令:crtmqm QMGR12. strmqm命令strmqm命令是启动IBM MQ队列管理器的命令。

例如,要启动名为QMGR1的队列管理器,我们可以使用以下命令:strmqm QMGR13. endmqm命令endmqm命令是停止IBM MQ队列管理器的命令。

例如,要停止名为QMGR1的队列管理器,我们可以使用以下命令:endmqm QMGR14. runmqsc命令runmqsc命令是启动IBM MQ命令行管理工具的命令。

我们可以在命令行模式下使用该命令来执行各种MQ管理任务。

例如,要启动runmqsc,我们可以使用以下命令:runmqsc QMGR15. crtmqobj命令crtmqobj命令是创建IBM MQ队列和通道的命令。

例如,要创建一个名为MYQUEUE的本地队列,我们可以使用以下命令:crtmqobj QMGR1 QLOCAL(MYQUEUE)6. dltmqobj命令dltmqobj命令是删除IBM MQ队列和通道的命令。

例如,要删除名为MYQUEUE的本地队列,我们可以使用以下命令:dltmqobj QMGR1 QLOCAL(MYQUEUE)7. display命令display命令是显示IBM MQ队列管理器、队列和其他对象的信息的命令。

例如,要显示名为QMGR1的队列管理器的配置信息,我们可以使用以下命令:display qmgr QMGR18. Inquire命令Inquire命令是查询IBM MQ队列管理器、队列和其他对象的信息的命令。

MQ常用命令

MQ常用命令

查看死信队列:dis qlocal(DEADQ)
查看本地队列:dis qlocal(*)
查看本地队列深度: display ql(xxx) curdepth
查看远程队列深度:display qr(xxx) curdepth
查看ccsid: display qmgr all
更改监听: alter listener(xxxx) TRPTYPE(TCP) PORT(1417) CONTROL(QMGR)
停止监听: end LISTENER(xxxx)
查看通道当前序列号: dis chs(xxxx) curseqno
查看通道所有状态: dis chs(xxxxx) all
查看通道: dis chl(xxx)
查看所有通道 dis chl(*) 或 dis chs(*或 dis lsstatu(listentName)
查看本地队列:dis qlocal(xxxxx) 查看其中的 CURDEPTH(0),若其>0,则说明本地队列堵塞
显示所有远程队列: display qremote(*)
显示所有通道: display channel(*)
ping通道:ping CHANNEL(xxxx)
清空队列内容:clear Qlocal(Qname)(需运行 runmqsc)
删除队列:delete qlocal(Qname)
以下为MQ常用命令:
查看发送通道:display channel(xxx)
查看队列管理器: dspmq
停止队列管理器:endmqm QMEMBFE
删除队列管理器:dltmqm QMEMBFE
重置发送通道:reset channel(xxxx)

RocketMQ常用命令

RocketMQ常用命令

RocketMQ常⽤命令在bin⽬录下的mqadmin命令,可以进⾏创建、修改topic,更新broker的配置信息,查询特定消息等各种操作。

1. 创建Topic指令 :updateTopic⽤法:sh mqadmin updateTopic -n 192.168.1.100:9876参数是否必填说明-b如果-c为空,则必填broker 地址,表⽰topic 建在该broker-c如果-b为空,则必填cluster 名称,表⽰topic 建在该集群(集群可通过clusterList 查询)-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...-p否指定新topic 的权限限制( W|R|WR ) -r 否可读队列数(默认为8)-w否可写队列数(默认为8)-t是opic 名称(名称只能使⽤字符 ^[a-zA-Z0-9_-]+$ )2. 删除Topic指令 :deleteTopic参数是否必填说明-c是cluster 名称,表⽰删除某集群下的某个topic (集群可通过clusterList 查询)-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;…-t是topic 名称(名称只能使⽤字符 ^[a-zA-Z0-9_-]+$ )3. 创建(修订)订阅组指令 :updateSubGroup参数是否必填说明-b如果 –c 为空,则必填broker 地址,表⽰订阅组建在该broker-c如果 –b 为空,则必填cluster名称,表⽰topic 建在该集群(集群可通过clusterList查询)-d否是否容许⼴播⽅式消费-g是订阅组名-i否从哪个broker 开始消费-m否是否容许从队列的最⼩位置开始消费,默认会设置为false-q否消费失败的消息放到⼀个重试队列,每个订阅组配置⼏个重试队列-r 否重试消费最⼤次数,超过则投递到死信队列,不再投递,并报警-s否消费功能是否开启-w 否发现消息堆积后,将Consumer 的消费请求重定向到另外⼀台Slave 机器-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...4. 删除订阅组配置指令: deleteSubGroup参数是否必填说明-b 如果–c 为空,则必填broker 地址,表⽰订阅组建在该broker-c 如果–b 为空,则必填cluster 名称,表⽰topic建在该集群(集群可通过clusterList查询)-g是订阅组名-h否打印帮助-n 是nameserve 服务地址列表,格式ip:port;ip:port;...5. 更新Broker 配置⽂件指令 :updateBrokerConfig参数是否必填说明-b 如果–c为空,则必填broker 地址,表⽰订阅组建在该broker-c 如果–b 为空,则必填cluster名称,表⽰topic 建在该集群(集群可通过clusterList查询)-k 是 key 值-v否value 值-h否打印帮助-n 是nameserve 服务地址列表,格式ip:port;ip:port;...6. 查看Topic 列表信息指令 :topicList参数是否必填说明-h否打印帮助-n 是nameserve 服务地址列表,格式ip:port;ip:port;...7. 查看Topic 路由信息指令 :topicRoute参数是否必填说明-t是topic 名称-h否打印帮助-n 是nameserve 服务地址列表,格式ip:port;ip:port;...8. 查看Topic 统计信息指令 :topicStats参数是否必填说明-t是topic 名称-h否打印帮助-n 是nameserve 服务地址列表,格式ip:port;ip:port;...9. 查看Broker 统计信息指令 :brokerStats参数是否必填说明-b是 broker 地址-h否打印帮助-n 是nameserve 服务地址列表,格式ip:port;ip:port;...10. 根据消息ID 查询消息指令 :queryMsgById参数是否必填说明-i是消息id-h否打印帮助-n 是nameserve 服务地址列表,格式ip:port;ip:port;...11. 根据消息Key 查询消息指令 :queryMsgByKey参数是否必填说明-f否被查询消息的截⽌时间-k是msgKey-t是topic 名称-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...12. 根据Offset 查询消息指令 :queryMsgByOffset参数是否必填说明-b 是Broker 名称,表⽰订阅组建在该broker(这⾥需要注意填写的是broker 的名称,不是broker 的地址,broker名称可以在clusterList 查到-i是query 队列id-o是offset 值-t是topic 名称-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...13. 查询Producer 的⽹络连接该命令只打印当前与cluster 连接的producer ⽹络连接信息指令 :producerConnection参数是否必填说明-g是⽣产者所属组名-t是topic 名称-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...14. 查询Consumer 的⽹络连接该命令只打印当前与cluster 连接的consumer ⽹络连接信息指令 :consumerConnection参数是否必填说明-g是消费者所属组名-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...15. 查看订阅组消费状态指令 :consumerProgress参数是否必填说明-g是消费者所属组名-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...16. 查看集群消息指令 :clusterList参数是否必填说明-m否打印更多信息-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...17. 添加(更新)KV 配置信息指令 :updateKvConfig参数是否必填说明-k是key 值-v是value 值-s是Namespace 值-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...18. 删除KV 配置信息指令 :deleteKvConfig参数是否必填说明-k是key 值-s是Namespace 值-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...19. 添加(更新)Project group 配置信息指令 :updateProjectGroup参数是否必填说明-p是project group 名-i否服务器ip-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...20. 删除Project group 配置信息指令 :deleteProjectGroup参数是否必填说明-p是project group 名-i否服务器ip-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...21. 取得Project group 配置信息指令 :getProjectGroup参数是否必填说明-p是project group 名-i否服务器ip-i否服务器ip -h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...22. 设置消费进度根据时间来设置消费进度,设置之前要关闭这个订阅组的所有consumer,设置完再启动,⽅可⽣效指令 :resetOffsetByTime参数是否必填说明-f否通过时间戳强制回滚(true|false),默认为true-s是时间戳-g是消费者所属组名-t是topic 名称-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...23. 清除特定Broker权限指令 :wipeWritePerm参数是否必填说明-b是broker 地址-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:port;...24. 获取Consumer消费进度该命令只打印当前与cluster 连接的consumer 的消费进度指令 :getConsumerStatus参数是否必填说明-g是消费者所属组名-t是查询主题-i否Consumer 客户端ip-h否打印帮助-n是nameserve 服务地址列表,格式ip:port;ip:portt;...。

mq常用命令

mq常用命令

mq常用命令一、连接管理命令1. mqsc:进入MQSC模式,用于管理MQ对象。

2. runmqsc:运行MQSC脚本。

3. strmqm:启动MQ队列管理器。

4. endmqm:停止MQ队列管理器。

5. dspmq:显示当前系统中的MQ队列管理器。

6. crtmqm:创建新的MQ队列管理器。

7. dltmqm:删除指定的MQ队列管理器。

二、队列管理命令1. crtlq:创建本地队列。

2. dltmq:删除本地队列。

3. dmpmqmsg:显示队列中的消息。

4. amqmsrvn:启动MQ服务。

5. amqmdnet:启动MQ分布式网络服务。

6. amqmdgin:启动MQ远程订阅服务。

三、消息处理命令1. amqsput:向队列发送消息。

2. amqsget:从队列接收消息。

3. amqssub:订阅消息。

4. amqssubc:取消订阅消息。

5. amqsgrep:根据消息内容过滤消息。

四、通道管理命令1. crtmqchs:创建MQ通道。

2. dltmqchs:删除MQ通道。

3. strmqmchs:启动MQ通道。

4. endmqmchs:停止MQ通道。

5. dspmqchs:显示MQ通道。

6. amqssslc:启用SSL加密通道。

五、安全管理命令1. setmqaut:设置队列对象的授权。

2. dspmqaut:显示队列对象的授权。

3. setmqaut:设置队列管理器的授权。

4. dspmqaut:显示队列管理器的授权。

5. setmqaut:设置通道的授权。

6. dspmqaut:显示通道的授权。

六、日志管理命令1. amqsbcg:启用MQ日志。

2. amqsbcgc:停用MQ日志。

3. amqsbcgd:调整MQ日志大小。

4. dspmqlog:显示MQ日志。

七、监控命令1. dspmqrte:显示MQ路由器状态。

2. dspmqspl:显示MQ任务状态。

3. dspmqsrv:显示MQ服务状态。

IBM MQ常用命令

IBM MQ常用命令
再有看看远程队列中的属性是不是配置错误,如rname,rqname,xmitq等属性。
也有可能是发送接收队列的消息序列号不一致。如果不一致做一下reset操作。
还有可能是上一批消息没有提交。可以做一个resolve操作。
QR1 -> QT1 -> QL2
消息被放入到远程队列中,远程队列通过传输队列传输,最后传输到QM2中的本地队列。
出现问题,我们怎么办?
1 不能放入消息。
一般这种情况应该大部分是远程队列中的传输队列那个参数配置的不正确。
还有可能是队列的允许放入这个参数设置成了禁止。基本上就这两种情况。
更改属性
ALTER QMGR DESCR(‘NEW DESCRIPTION’)
ALTER QLOCAL(QNAME) PUT(DISABLED)
ALTER QALIAS(QNAME) TARGQ(TARGQNAME)
删除队列
DELETE QLOCAL(QNAME)
DELETE QREMOTE(QRNAME)
INITQ(SYSTEM.CHANNEL.INITQ)+
PROCESS(PROCESSNAME) REPLACE
创建进程定义
DEFINE PROCESS(PRONAME) +
DESCR(‘STRING’)+
APPLTYPE(WINDOWSNT)+
APPLICID(’ runmqchl -c SDR_TEST -m QM_ TEST’)
常用命令
创建队列管理器
crtmqm –q QMgrName
-q是指创建缺省的队列管理器
删除队列管理器
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

QUEUE(QMB)
TYPE(QLOCAL)
ACCTQ(QMGR)
ALTDATE(2009-02-06)
ALTTIME(11.41.44)
BOQNAME( )
BOTHRESH(0) CLUSTER( )
CLUSNL( ) CLWLPRTY(0)
CLWLRANK(0)
CLWLUSEQ(QMGR)
CRDATE(2008-12-05)
1.查看所有队列管理器 dspmq
查看所有的通道
dis chl(name)/dis chl(*)/dis chl(*) all/dis channel(name)
查看通道状态
dis chs(name)/dis chs(*)/dis chs(*) all
查看队列
display queue(name)
查看队列管理器信息(包括 CCSID 等信息) dis qmgr
种方法。 需要注意的时,当 DEPTH 属性值为0的时候,实际上就形成了同步通信。另外,当采用 Depth 触发时,产生触发消息以后,队列将被修改为非触发方式,如果需要再次触发,需要重新设 置成允许触发。
一般而言,在实际应用中,如果通道设置成触发方式,触发类型往往设置成为 FIRST 和
DEPTH。
6.修改 ccsid
alter qmgr ccsid(“XXX”)
一、MQ 的启动与停止
用 root 用户启/停需要 root 用户包含在 mqm 组中。
1、MQ 的启动 strmqm QMgrName 如果启动默认队列管理器,strmqm 后可以忽略队列管理器名称。 在意外情况停止队列管理器后,启动可能会失败,此时可以检查上次停止后是否有 IPC 资 源未释放,若有请予以删除,删除方法参考下面的“C.清理所有残留在系统内部的信号灯和 共享内存”。
CRTIME(10.37.53)
CURDEPTH(0)
DEFBIND(OPEN)
DEFPRTY(0)
DEFPSIST(NO)
DEFSOPT(SHARED)
DEFTYPE(PREDEFINED)
DESCR( )
DISTL(YES)
GET(ENABLED)
HARDENBO
INITQ( )
IPPROCS(1)
5、查看死信队列 dis qlocal(DEADQName)
三、日常维护项目 1、监控文件系统/var/mqm 的使用情况,建议不要超过80%。
2、定期报告 MQ 系统错误,备份清理 MQ 系统错误记录 在遇到问题时,检查/var/mqm/errors 目录下是否有新的 FDC 文件产生,如果有应当检查原 因。另外,要定期检查该目录下 MQ 错误日志。 3、检查日志个数是否增长 使用命令 cd 移动到 MQ 日志所在目录(/var/mqm/log/QMgrName/active/),使用 ls –l|wc 命令统计。
次事情,下次传输队列的消息数由3个增加到4个时候不会产生触发事件YPE(FIRST)。
l 在通道触发中,推荐使用 SYSTEM.CHANNEL.INITQ 队列作为初始队列, 该队列为 MQ 专
用的通道启动队列, 不需要手工启动其触发监视器,设置传输队列
2.2.3 触发器工作流程
1)
本地或远程应用程序 A,往应用队列(Application Queue)中 PUT 了一条消息。
2)
如果队列的触发类型设置为 first,当队列原来深度为0时(队列为空),这时 PUT
一条消息到队列中将形成触发事件,同时产生一条触发消息,触发消息中将包含进程定义中
的信息,因为进程定义中包含启动程序 B 所需的信息,所以触发消息中也包含了启动程序 B
4. 检查 MQ 队列管理器错误日志 当系统运行不正常时首先检查:/var/mqm/qmgrs/QMgrName/errors/AMQERR0n.LOG 错误消息生成后总是放在 AMQERR01中,AMQERR02和 AMQERR03文件用于保存历史错 误消息 2.2.2 触发类型 l EVERY: 应用队列中每接受到一个消息时,都将产生触发消息。如果应用程序仅仅处理一个消息就结 束,可采用这种触发类型。 l FIRST: 应用队列中消息从0变为1时会触发事件。如果当队列中的一个消息到达时启动程序,直到 处理完所有消息才结束,则采用这种触发类型。 l DEPTH: 应用队列中消息数目和 TriggerDepth(引起触发事件发生时,队列中的消息数目)属性值相 同时,才会产生触发事件。当一系列请求的回复都收到时,才启动应用程序,则可以采用这
QDPLOEV(DISABLED)
QDPMAXEV(ENABLED)
QSVCIEV(NONE)
QSVCINT(999999999)
RETINTVL(999999999)
SCOPE(QMGR)
SHARE
STATQ(QMGR)
TRIGDATA( )
TRIGDPTH(1)
TRIGMPRI(0)
TRIGTYPE(FIRST)
所需的信息。
3)
队列管理器创建触发消息,并把它 PUT 入与应用队列相关的启动队列 Initiation
Queue。
4)
触发监控器(Trigger Monitor)从启动队列(Initiation Queue)中 GET 触发消息。
5)
触发监控器处理触发消息,发出启动应用程序 B 的命令。
6)
应用程序 B 打开应用队列(Application Queue),并处理队列中的消息。
完整 MQSC 命令参考如下:
ALTER QL(QMB) +
TRIGGER +
TRIGTYPE(FIRST) +
INITQ(SYSTEM.CHANNEL.INITQ) +
TRIGDATA(QMA.QMB)
l 通道的触发监控器我们采用系统的自带的 runmqchi 程序,缺省队列管理器启动的时候,
runmqchi 进程会自动启动。
发送通道名 QMA.QMB,通道启动器为 runmqchi,该进程在队列管理器启动的时候自动启
动。下面我们通过举例来演示配置实现消息通道触发启动。
l 首先我们来查看一下传输队列 QMB 都有哪些属性,显示如下清单所示,其中清单中的标 注红色的属性和通道触发配置相关。
dis ql(QMB)
1 : dis ql(QMB) AMQ8409: 显示队列细节。
二、MQ 运行状态查看与常用操作
1、查看队列管理器运行状态 对 MQ 5.2或以上版本,执行如下命令检查队列管理器运行状态:dspmq 显示结果中 QMNAME 表示 MQ 队列管理器的名称,STATUS 表示当前运行状态。 运行状态有如下几种: Starting 正在启动 Running 正在运行 Ending 正在停止 Ended normally 已经正常终止 Ended immediately 已经立即终止 Ended preemtively 已经强制终止 Ended unexpectively 异常终止 注意:停止 MQ 后必须使用 dspmq 命令进行状态检查 dspmq 查询结果示例: QMNAME(QM00) STATUS(Running)
INITQ(SYSTEM.CHANNEL.INITQ )属性。
l 通过 TRIGDATA 属性设置需要触发的通道名,例如 TRIGDATA(QMA.QMB )。
l 对于 TRIGMPRI 属性的含义是基于消息优先级触发,也即某类优先级的消息满足的触发条
件才产生触发事件,我们在消息通道触发中不推荐使用。
7.6.3.1 通道的状态
USAGE(XMITQ)
l 设置传输队列为触发模式 TRIGGER。
l 设置触发类型为 every/first/depth 其中的一种,例如 TRIGTYPE(FIRST)。如果设置为
TRIGTYPE(DEPTH),则还需要设置触发深度属性,例如 TRIGDPTH(4),表示当队列中的消
息数由3个增加到4个的时候才能形成触发事件,但需要注意的是深度触发事件只能产生一
2、MQ 的关闭 一般情况下,我们使用“endmqm -i QMgrName”来停止 mq,如果停止失败,可以使用如 下步骤: 步骤1:endmqm -p QMgrName,如果停不掉,继续步骤2; 步骤2:杀死有关进程,清理残留在系统内部的信号灯和共享内存 A.找到队列管理器程序进程 ps -ef|grep QMgrName B.使用 kill 命令终止1>中找到的程序进程,无法停止的进程可以用 kill -9来终止,终止进程 的顺序如下(不存在的进程可以忽略): kill amqpcsea 命令服务器 kill amqhasmx 记录器 kill amqharmx 日志格式化器(仅 LINEAR 日志) kill amqzllp0 检查点处理器 kill amqzlaa0 队列管理器代理 kill amqzxma0 处理控制器 kill amqrrmfa 库进程(用于群集) C.清理所有残留在系统内部的信号灯和共享内存(其属主和组均为 mqm) ipcs -s| grep mqm | awk '{print $2}'|xargs -i ipcrm -s {} ipcs -m| grep mqm | awk '{print $2}'|xargs -i ipcrm -m {}
2、查看通道运行状态与启停通道 runmqsc dis chl(*); 查看所有通道定义 dis chs(*); 查看所有通道状态,如果没有查询到通道状态,或报错 AMQ8420: Channel Status not found,请启动通道 dis chs(ChannelName);查看通道 ChannelName 的状态 通道状态有如下几种: STARTING 正在启动 BINDING 正在绑定 INITIALIZING 正在初始化 RUNNING 正常 STOPPING 正在停止 RETRYING 重试 PAUSED 等待 STOPPED 已停止 REQUESTING 请求 start chl(ChannelName); 启动通道 stop chl(ChannelName); 停止通道 reset channel(ChannelName); 重置通道序号。当本地与其他 MQ 队列管理器的通道无法 正常启动的情况,检查日志发现是通道序号不一致,此时就需要先停止发送方通道,并在发 送方和接收方进行通道计数的重置,重置后启动通道即可恢复通讯。
相关文档
最新文档