2016-10-01 1 views
0

MessageID、correlationID、persistence、Expiry、Priorityの値を要求MQメッセージから応答にコピーする必要があるという要件があります。 RFHUtilを使用して要求メッセージをキューに入れました。セッションBeanによってメッセージが消費されると、MQMDヘッダーのmessageIDは、別の値(HEXADECIMAL)に変更されます。これは、RFHUTILに入れたMessageIDとは異なります。MQMessage MQMD値をJMSメッセージにコピー

私は上記の値をsetメソッド、setJMSMessageIDなどを使用して要求から応答メッセージにコピーしますが、応答メッセージを見ると値が異なります。 これはMQからJMSへの変換によるものですか?これに対する解決策は何か。

私はMQ Messageを使用していましたが、すべてのフィールドをリクエストからレスポンスにコピーできました。

答えて

0

IBM MQのMessageIDは、設定されているAPI(Base MQまたはMQ JMS)に関係なく、常に16進数です。

リクエストメッセージを送信する際にMessageIDを設定する必要はありません。 MQがあなたにそれをさせる。 MQは要求メッセージの一意のメッセージIDを生成します。セッションBeanでは、要求メッセージのMessageIDを応答メッセージのCorrelationIDにコピーするだけです。この方法で、要求メッセージと応答メッセージを関連付けることができます。

詳細については、IBM WebSphere MQ request/reply scenarioを参照してください。

UPDATE

setMessageID方法を使用して設定されているすべての値は、メッセージが送信されるときに無視されるが、この方法は、受信したメッセージの値を変更するために使用することができます。

メッセージの送信時にsetMessageIDメソッドで設定されたメッセージIDが無視されるため、アプリケーションは送信メッセージのメッセージIDを指定できません。結果として、アプリケーションはメッセージを受信して​​から同じメッセージを転送することも、受信したメッセージと同じメッセージIDを持つ別のメッセージを送信することもできません。 linkを参照してください:

+0

ありがとうございます。しかし、それはそのまま応答メッセージにあるようにメサージIDを送信することです。それをコピーする方法はありますか?相関IDはメッセージIDではなく応答の相関IDにコピーされます。 –

+0

ベースMQを使用してそれを実行できましたが、プロジェクトの再要求のためにjmsに移行しなければならず、問題が発生しています。永続性、有効期限および優先度の値さえも、それに応じて変化しています。 –

+0

私のアップデートを回答でご覧ください。 – Shashi

関連する問題