2016-10-01 33 views
0

我有一個要求,我必須將MessageID,correlationID,persistence,Expiry和Priority從請求MQ消息的值複製到響應。我使用RFHUtil將請求消息放入隊列中。但是由於會話bean使用的消息,MQMD頭的messageID更改爲某個不同的值-HEXADECIMAL,這與我在RFHUTIL中放置的MessageID不同。將MQMessage MQMD值複製到JMS消息

然後我使用set方法,將set-MSMessageID等從請求複製到響應消息的上述值,但一旦查看響應消息,值就會不同。 這是由於MQ到JMS的轉換嗎?什麼可以解決這個問題。

早些時候我使用MQ Message,並且能夠將所有字段從請求複製到響應。

回答

0

無論從哪個API設置Base MQ或MQ JMS,IBM MQ中的MessageID始終爲十六進制。

發送請求消息時不需要設置MessageID。讓MQ爲你做。 MQ將爲請求消息生成一個唯一的消息ID。在會話bean中,只需將請求消息的MessageID複製到響應消息的CorrelationID。這樣您可以關聯請求和響應消息。

有關更多詳細信息,請參見IBM WebSphere MQ request/reply scenario

UPDATE

在發送消息時使用setMessageID方法的任何值集合被忽略,但可使用的方法,在接收到的消息來改變所述數值。

由於setMessageID設置的消息ID在發送消息時被忽略,應用程序無法指定消息的消息ID。因此,應用程序無法收到消息,然後轉發相同的消息,或發送不同的消息,並使用與收到的消息相同的消息ID。查看link

+0

謝謝shashi,但要求是發送mesaage ID,因爲它在響應消息中沒有任何改變。有什麼方法可以複製它?相關ID將被複制到響應的相關ID中,而不是在消息ID中。 –

+0

我能夠使用基礎MQ來完成它,但是由於項目需求,必須轉移到jms,並且它正在創建問題。即使持久性,到期時間和優先級的價值也在變化。 –

+0

請在答案中查看我的更新。 – Shashi