如何察看mq中queue的消息内容

2025-05-07 02:44:48
推荐回答(2个)
回答1:

Prepare:假设queue的名字叫做local.queue, queue manager的名字叫做 test.queue.manager,mq安装在/opt/mqm下。

1.先确定queue的长度不是0.
$runmqsc test.queue.manager
dis ql('local.queue') curdepth
2 : dis ql('local.queue') curdepth
AMQ8409: Display Queue details.
QUEUE(local.queue) CURDEPTH(1)

如上所示,queue里面是有一个message的,因为curdepth的长度为1。

2.查看queue的message的内容
第一种方式:使用/opt/mqm/samp/bin/amqsget
第二种方式:使用/opt/mqm/samp/bin/amqsbcg

共同点:
都是在命令后面先跟queue的名字,然后再跟queue manager的名字,如下

/opt/mqm/samp/bin/amqsget local.queue test.queue.manager

区别是:
前者只能查看短长度的message,并且会把message取出(还不是太确定后者);遇到长度稍微长一点的就会发出2080的error code.
$/opt/mqm/samp/bin/amqsget local.queue test.queue.manager
Sample AMQSGET0 start
MQGET ended with reason code 2080
Sample AMQSGET0 end

而后者则没有这个限制;但是amqsbcg显示的message很奇特,连二进制的都同时显示。

回答2:

工作中的一些体会:如何查看queue里的messages的content.

说实在的,MQ的东西很烦琐,虽然很强大。可是中文的资料太少(当然中文版的MQ会带些帮助文档,不过都是垃圾);英文的太拗口(虽然我整天看英文的文档,还是看不太懂;要不就是MQ太庞大了?)
反正我只是在工作中学了那么一点点可怜的东西,就赶快写出来了。

据我所知,是有两种的方式来查看queue的content.

Prepare:
假设queue的名字叫做local.queue, queue manager的名字叫做 test.queue.manager,mq安装在/opt/mqm下.

1.先确定queue的长度不是0.
$runmqsc test.queue.manager
dis ql('local.queue') curdepth
2 : dis ql('local.queue') curdepth
AMQ8409: Display Queue details.
QUEUE(local.queue) CURDEPTH(1)

如上所示,queue里面是有一个message的,因为curdepth的长度为1.

2.查看queue的message的内容
第一种方式:使用/opt/mqm/samp/bin/amqsget
第二种方式:使用/opt/mqm/samp/bin/amqsbcg

共同点:
都是在命令后面先跟queue的名字,然后再跟queue manager的名字,如下

/opt/mqm/samp/bin/amqsget local.queue test.queue.manager

区别是:
前者只能查看短长度的message,并且会把message取出(还不是太确定后者);遇到长度稍微长一点的就会发出2080的error code.
$/opt/mqm/samp/bin/amqsget local.queue test.queue.manager
Sample AMQSGET0 start
MQGET ended with reason code 2080
Sample AMQSGET0 end

而后者则没有这个限制;但是amqsbcg显示的message很奇特,连二进制的都同时显示