【问题标题】:Processing MQ ByteMessage using JMS client使用 JMS 客户端处理 MQ ByteMessage
【发布时间】:2013-09-28 07:16:24
【问题描述】:

我正在使用 IBM MQ 和 Java 将消息作为字节写入队列。我在这里遇到的问题是,在从 JMS 客户端 offcourse 读取预期格式的此消息时,我得到的是“BytesMessage”而不是 MQSTR 格式的消息。

在将消息写入队列时我必须设置哪些属性,以便 JMS 客户端将该消息作为文本而不是字节来使用?

我是否需要更改以下任何属性或其他任何内容?

openOptions =MQC.MQOO_OUTPUT
putOptions=MQC.MQPMO_SYNCPOINT

以下是示例生产者代码,这里我不提完整代码。

String message="text";  
final MQMessage mqm = new MQMessage();
mqm.write(message.getBytes());

问候,

柴兔

【问题讨论】:

  • 看看here,它展示了如何将 ByteMessage 转换回字符串(但请完整阅读接受答案,您可能会遇到字符集问题)。

标签: java jms ibm-mq


【解决方案1】:

好吧,如果你的消息只是文本格式,那么写成字节有什么意义。

相反,您可以使用其他功能,例如:

String message="text";  
MQMessage mqm = new MQMessage();
mqm.writeString(message);

此外,您可以将消息的“格式”属性设置为任何有效格式(MQRFH2、MQSTR 等),例如:

mqm.format="MQSTR";

【讨论】:

  • 谢谢,如果我将消息写为字符串并将格式设置为 MQSTR,有什么区别。
  • @chaituk 我相信,当您使用 writestring 时,您将能够在接收应用程序中将消息作为字符串读取(使用 readstring 函数)。但是,有时一些应用程序无法处理 MQRFH2 格式的消息,并要求发送应用程序将 MQ 格式显式设置为 MQSTR。但是,如果您不设置任何内容,则默认情况下它仅被视为 MQSTR。
猜你喜欢
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 2013-04-07
  • 1970-01-01
  • 2012-06-15
相关资源
最近更新 更多