在尝试浏览DLQ中的消息时获取mqrc 2080

时间:2018-04-25 13:03:45

标签: 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
 MQDISC1:root@hostname:/root # mqrc 2080

      2080  0x00000820  MQRC_TRUNCATED_MSG_FAILED

2 个答案:

答案 0 :(得分:1)

尝试MQ V8及更高版本附带的dmpmqmsg实用程序。

以下调用为例......

dmpmqmsg -m QM.ABCDEFG -i SYSTEM.DEAD.LETTER.QUEUE -f myfile.txt

这将在转出MQMD后为您提供消息的十六进制转储。 amqsbcg也只会给你一个消息的十六进制转储,因此在这两种情况下你仍然需要从十六进制消息中选择你的DLQ原因代码。

答案 1 :(得分:0)

amqsbcg是安装开发工具时MQ附带的示例MQ程序。 amqsbcg(amqsbcg0.c)的源代码位于/ opt / mqm / samp /目录中。

如果您查看来源,您将在第137行看到

#define    BUFFERLENGTH  65536  /* Max length of message accepted */

因此,任何大于65536字节的消息都将导致MQ返回RC为2080(MQRC_TRUNCATED_MSG_FAILED),其消息似乎大于65536字节。

因此,您有一些选择:

  1. 获取amqsbcg0.c的副本,用更大的值更新它, 编译&链接它
  2. 使用MQ Explorer的浏览功能
  3. 使用MQ Visual Edit之类的供应商工具 查看死信队列。