2012-08-14 131 views
2

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

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

+0

仅供参考..我正在使用JMS TextMessage对象。 – srowley 2012-08-14 02:57:50

回答

2

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

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

+0

http://www-01.ibm.com/support/docview.wss?uid=swg21573858 – srowley 2012-08-16 13:44:31

1

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

存在于queueschannels上的属性PROPCTL用于控制是否看到RFH2标头。根据设置的方式,这些属性在有效负载中不可见,因为不会生成RFH2头。如果您设置了PROPCTL,那么您可以让WMQ通过RFH2标题发送消息,您可以在那里看到该属性。否则,您将需要使用属性getter方法,但无论如何都不会在消息头中看到属性,因为它不是映射在那里的属性。

欲知详情,请参阅Infocenter主题Mapping JMS fields onto WebSphere MQ fields (outgoing messages)

+0

当收到消息时,我试图通过getLongProperty获取该属性,但它不存在。我试着阅读你的解释,而我仍然在做什么的损失。 – srowley 2012-08-14 14:29:07

+0

设置属性时,是否捕获MessageNotWriteableException和JMSException?未处理的异常可能允许属性设置失败,但仍然写入消息。您是否试图在本地QMgr上检索属性?这些属性可能会在通道或远程队列中转换为RFH2。在本地检索它们可以消除方程中的这些失败点。 – 2012-08-14 15:57:07

+0

我发现了一个可能适用于我需要的链接:http://www-01.ibm.com/support/docview.wss?uid=swg21573858。我会在测试窗口中测试它,然后返回我的结果。 – srowley 2012-08-14 17:08:12