2012-08-14 103 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