MQ消息作为字节数组而不是String接收

时间:2013-01-16 17:17:30

标签: java jms ibm-mq

我正在使用Websphere MQ并使用Spring集成和jms适配器从队列中读取消息。

当我手动将消息添加到队列时,应用程序正在读取它们并以String的形式读取数据,一切都很好。

但是,当外部方向队列添加消息时,应用程序将它们作为字节数组读取,然后抛出此异常:

Caused by: java.lang.ClassCastException: [B cannot be cast to java.lang.String

在MQExplorer中,消息看起来与我相同。

虽然我注意到了一个Format列,其中作为字符串处理的消息的值为MQSTR,并且正在处理为Byte []的消息中没有任何内容。这有关系吗?如果是这样,任何想法如何设置消息的“格式”?

是否有人知道什么决定了邮件的有效内容类型,这样我至少可以重新创建问题?

2 个答案:

答案 0 :(得分:4)

我之前遇到过这种情况。外部方可能没有使用JMS,但可能正在使用Java的MQI或Websphere MQ类。

这意味着您可能正在接收ByteMessages消息。

This article解释了MQ消息到JMS消息的转换。

我会与外部人员交谈并询问他们如何发送他们的消息。他们可能必须向您提供他们正在设置的MQMD属性的详细信息。您可能必须在MessageListener中检索这些内容。

答案 1 :(得分:0)

在本机MQ消息发送方,设置mqmd ["格式"] =' MQSTR'将确保消息以jms_text格式发送,否则默认情况下以字节格式发送。

我使用Pymqi在Python2.7中使用它。