2

我在 TextMessage 上设置 Long 属性msg.setLongProperty("publishSequence", pubSeq);,并将其发送到本地 IBM WebSphere MQ 队列管理器以发送到远程队列。消息发送正常,但 MQ 在将 MQ 属性放入消息头时删除了 Long 属性。

以前有没有其他人遇到过这个问题?如果是这样,您是如何解决的?

4

2 回答 2

2

以下链接能够回答我的问题。我已经测试过了,它可以工作。

queue.setMessageBodyStyle(WMQConstants.WMQ_MESSAGE_BODY_JMS);在 MQQueue 对象上使用将主体样式设置为 JMS,以便保留该属性。

于 2012-08-14T22:29:43.660 回答
1

您设置的属性不会映射到消息头。在旧版本的 WMQ 中,它映射到 RFH2 标头,但在新版本的 WMQ(V7.1 和更高版本)中,可以使用消息属性 setter/getter 方法访问该属性,因此通常看不到 RFH2 标头。

队列通道PROPCTL上存在一个属性来控制您是否看到 RFH2 标头。根据其设置方式,这些属性在有效负载中将不可见,因为不会生成 RFH2 标头。如果您设置 PROPCTL,那么您可以让 WMQ 传递带有 RFH2 标头的消息,您可以在那里看到该属性。否则,您将需要使用属性 getter 方法,但在任何情况下都不会在消息头中看到该属性,因为它不是在那里映射的。

请参阅信息中心主题将 JMS 字段映射到 WebSphere MQ 字段(传出消息)以获取更多信息。

于 2012-08-14T03:32:03.400 回答