2016-02-12 18 views
0

我有一個從MQ隊列讀取消息的Java JMS應用程序。我的應用程序可以成功讀取消息並取出JMS標頭(例如JMSDeliveryMode,JMSPriority等)和消息正文,但我無法訪問消息的<usr>文件夾部分。如何使用JMS API從WMQ訪問RFH2/usr文件夾

我將消息放置在使用RFHutil的隊列中。在RFH標籤下,我勾選'Include RFH V2 Headers'和'usr',在usr標籤下我有test1 = 1。如果我使用MQExplorer瀏覽隊列,我可以在消息中看到<usr><test1>1</test1></usr>,所以我想我正確設置了usr文件夾。

我已經輸出了整個message.getPropertyNames()枚舉(截至話題JMS passing entire Application data <usr> block討論,但我的USR場不是在那裏。我的消息的身體也並不包含我的USR領域。

我也讀了MQ v7信息中心您需要將WMQ_MESSAGE_BODY設置爲WMQ_MESSAGE_BODY_MQ,但我使用的是v6MQ,並且不知道這是否相關/如何設置此值。

如何使用JMS API訪問usr文件夾?

任何幫助/指針將非常感謝,因爲我對J相當新MS編程。

+0

如果接收者知道用戶屬性的名稱,他可以用像getStringProperty()這樣的方法獲取值:https://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getStringProperty %28java.lang.String%29 – user3714601

回答

0

第一個問題是爲什麼USR文件夾的重要性?您是否試圖讓您的JMS應用程序與使用另一個編寫自定義RFH2頭文件的應用程序放置的消息進行互操作。

RFHUtil主要用於測試目的。

MQ JMS最初使用RFH2 heasder來專門發送JMS屬性。因此MQ JMS代碼讀取消息,刪除RFH2並將其處理爲完整的JMS消息。

如果您希望JMS API完全讀取RFH2,則用於讀取已突出顯示的MQ消息的屬性是正確的。但是這些不在MQ v6中。請注意,mq v6和V7.0.1現在不受支持。強烈建議您研究升級到MQ v8 - 至少需要MQ 7.5。

如果您是一名開發人員並連接到一個有權限的QueueManager,則可免費下載這些客戶端。客戶端版本不必與QM匹配。

+0

感謝您的回覆。讓我們暫時忘記RFHUtil。我的實際情況是:源代碼團隊將路由信息保存在RFH2頭文件中。所以,我需要使用JMS API獲取這些信息。首先請建議是否有機會訪問RFH2Header或JMS協議不接受RFH2頭。我正在使用MQ 7.5。 – Ravi

相關問題