我在 TextMessage 上设置 Long 属性msg.setLongProperty("publishSequence", pubSeq);
,并将其发送到本地 IBM WebSphere MQ 队列管理器以发送到远程队列。消息发送正常,但 MQ 在将 MQ 属性放入消息头时删除了 Long 属性。
以前有没有其他人遇到过这个问题?如果是这样,您是如何解决的?
我在 TextMessage 上设置 Long 属性msg.setLongProperty("publishSequence", pubSeq);
,并将其发送到本地 IBM WebSphere MQ 队列管理器以发送到远程队列。消息发送正常,但 MQ 在将 MQ 属性放入消息头时删除了 Long 属性。
以前有没有其他人遇到过这个问题?如果是这样,您是如何解决的?
以下链接能够回答我的问题。我已经测试过了,它可以工作。
我queue.setMessageBodyStyle(WMQConstants.WMQ_MESSAGE_BODY_JMS);
在 MQQueue 对象上使用将主体样式设置为 JMS,以便保留该属性。
您设置的属性不会映射到消息头。在旧版本的 WMQ 中,它映射到 RFH2 标头,但在新版本的 WMQ(V7.1 和更高版本)中,可以使用消息属性 setter/getter 方法访问该属性,因此通常看不到 RFH2 标头。
队列和通道PROPCTL
上存在一个属性来控制您是否看到 RFH2 标头。根据其设置方式,这些属性在有效负载中将不可见,因为不会生成 RFH2 标头。如果您设置 PROPCTL,那么您可以让 WMQ 传递带有 RFH2 标头的消息,您可以在那里看到该属性。否则,您将需要使用属性 getter 方法,但在任何情况下都不会在消息头中看到该属性,因为它不是在那里映射的。
请参阅信息中心主题将 JMS 字段映射到 WebSphere MQ 字段(传出消息)以获取更多信息。