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