Ibm mq 尝试在DLQ中浏览消息时获取mqrc 2080
我试图在DLQ中浏览邮件,但出现2080错误 请分享您在这个问题上的专业知识Ibm mq 尝试在DLQ中浏览消息时获取mqrc 2080,ibm-mq,Ibm Mq,我试图在DLQ中浏览邮件,但出现2080错误 请分享您在这个问题上的专业知识 1:root@hostname:/root # ./amqsbcg SYSTEM.DEAD.LETTER.QUEUE QM.ABCDEFG AMQSBCG0 - starts here ********************** MQOPEN - 'SYSTEM.DEAD.LETTER.QUEUE' MQGET 1, failed with CompCode:1 Reason:2080 MQCLOSE
1:root@hostname:/root # ./amqsbcg SYSTEM.DEAD.LETTER.QUEUE QM.ABCDEFG
AMQSBCG0 - starts here
**********************
MQOPEN - 'SYSTEM.DEAD.LETTER.QUEUE'
MQGET 1, failed with CompCode:1 Reason:2080
MQCLOSE
MQDISC1:root@hostname:/root # mqrc 2080
2080 0x00000820 MQRC_TRUNCATED_MSG_FAILED
amqsbcg是一个示例MQ程序,在安装开发工具时随MQ一起提供。amqsbcg(amqsbcg0.c)的源位于/opt/mqm/samp/目录中 如果您查看来源,您将在第137行看到: 因此,任何大于65536字节的消息都将导致MQ返回2080的RC(MQRC_TRUNCATED_MSG_FAILED),而您的消息似乎大于65536字节 因此,您有一些选择:
尝试MQ V8及更高版本附带的
dmpmqmsg
实用程序
以下调用作为示例
dmpmqmsg -m QM.ABCDEFG -i SYSTEM.DEAD.LETTER.QUEUE -f myfile.txt
这将在MQMD转储后为您提供消息的十六进制转储。amqsbcg也只会给您消息的十六进制转储,因此在这两种情况下,您仍然必须从十六进制消息中选择DLQ原因码。我尝试了您提到的方法。我编辑了文件,保存了它。但我不确定什么是“编译”。如果这是一个简单的过程,请您在这里解释一下。@Rinak-“编译和链接”是一个术语,用于描述将一些“C”语言代码(即示例amqsbcg0.C)构建到可以运行的可执行文件中(即amqsbcg.exe)。你熟悉什么编程语言?@Morag Hughson:不幸的是,我不懂任何编程语言。@Rinak-真遗憾。我计划将“compile&link”翻译成您熟悉的编程语言所使用的任何措辞。只需说一句,用代码编写的程序通常以一个文本文件的形式启动,如您看到和编辑的amqsbcg0.c。但是,对于某些编程语言,它不能直接从此文本文件运行。文本文件需要经过一个过程才能转换为可执行程序,在本例中为amqsbcg.exe。这个过程在这里被称为“编译和链接”。该过程使用“编译器”完成。建议您查找这些术语。编辑上面的答案以包括MQ Explorer@Rinak您也安装了吗?我会在MQ8上尝试,但服务器仍然有MQ7.1.0.8版本。感谢您对dmpmqmsg的改进。使用V8安装一个客户端,然后在那里使用它。@MoragHughson奇怪的是,我注意到Redist客户端中不包括
dmpmqmsg
,它确实包括其他方便的工具,如dmpmqcfg
和runmqsc
。你知道完整客户端中包含了dmpmqmsg
吗?你问@JoshMc是对的,我不确定,只是希望如此。我本来希望dmpmqmsg
住在dmpmqcfg
住过的任何地方,因为它们是同一个问题的两部分-抓取配置和抓取消息。也许这需要一个RFE。
dmpmqmsg -m QM.ABCDEFG -i SYSTEM.DEAD.LETTER.QUEUE -f myfile.txt