集約フロー用のトランスポート・プロトコルとして WebSphere MQ を使用している場合、入力 MQMD からの MsgId を保存し、出力応答の CorrelId としてそれを使用することによって、 初期の要求メッセージと複合応答メッセージを相関させることができます。
始める前に:
このタスクを実行するには、以下のタスクを完了している必要があります。
初期の要求がファンアウト・フローによって処理される場合、 MQMD に保留されている MsgId は失われます。 集約された出力メッセージを元の入力メッセージに相関させたい場合、 これを行う1 つの方法は、MsgId を保存し、それを集約された出力メッセージで CorrelId として指定することです。
ここで説明されているタスクは、ファンアウト・フローおよびファンイン・フローを、 同じブローカーで実行する 2 つの別個のフローとしてすでに作成していることが前提です。 これらのフローの最小の内容も前提とされています。すなわち、フローにはいかなる内容であれ適切なものを含むことができ、 この追加の関数を追加するためにここで表示されている方法でそれを適応させることができます。
CREATE COMPUTE MODULE SaveMsgId CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN CALL CopyMessageHeaders(); // Extract and preserve the MsgId of the original request message SET OutputRoot.XML.MyMsgId = InputRoot.MQMD.MsgId; END; CREATE PROCEDURE CopyMessageHeaders() BEGIN DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(InputRoot.*[]); WHILE I < J DO SET OutputRoot.*[I] = InputRoot.*[I]; SET I = I + 1; END WHILE; END; END MODULE;
SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; // Store the saved MQMD MsgId value from the specified folder in MQMD CorrelId field SET OutputRoot.MQMD.CorrelId = CAST(InputRoot.ComIbmAggregateReplyBody.SavedMSGID.XML.MyMsgId AS BLOB);ファンアウトの例が下記に示されています。 Compute ノードの SetCorrelID は、応答を処理して複合応答メッセージを作成し、 MQMD の相関 ID を設定してこの応答を初期の要求と関連付けます。
関連概念
メッセージ・フロー
メッセージ・フローの集約
関連タスク
集約フローの構成
メッセージ・フローの設計
メッセージ・フローの作成
メッセージ・フローの内容の定義
関連資料
AggregateControl ノード
AggregateReply ノード
AggregateRequest ノード
注意 |
商標 |
ダウンロード |
ライブラリー |
技術サポート |
フィードバック
![]() ![]() |
ac20410_ |