集約フローでの例外の処理
集約フローを使用する場合、例外が生じることがあります。
始める前に
以下のタスクを実行します。
例外の処理
このタスクの概要
応答の集約 ノードのダウンストリームでエラーが検出された場合、統合ノードは例外を発行します。 また、メッセージ・フロー内の別のノードも、ESQL THROW ステートメントを使用して例外を発行することがあります。 いずれの場合にも、例外が起きると、以下の 2 つの場所のどちらかでキャッチされます。
- 応答が到着する入力ノード
- 応答の集約 ノード
以下の表に、イベントをリストし、 応答の集約 ノードの下流で発生する例外について説明します。
イベント | 伝搬されるメッセージ | 出力ターミナル | 例外がキャッチされる場所 |
---|---|---|---|
予期される応答が入力ノードに到着し、 応答の集約 ノードの In ターミナルに渡されます。 この応答は、集約の完成に必要な最後の応答です。 | すべての応答を含む集約された応答メッセージ | Out | Input ノード |
予期しない応答が入力ノードに到着し、 応答の集約 ノードに渡されます。 応答は、有効な応答と認識されず、「不明なメッセージ・タイムアウト」プロパティーは 0 に設定される。 | 受け取られたメッセージ | 不明 | Input ノード |
集約のすべての応答がまだ到着していないのでタイムアウトが生じる。 | 受け取ったすべての応答を含む集約された応答メッセージ | タイムアウト | 応答の集約 ノード |
保存メッセージは有効な応答と識別されないので、不明タイムアウトが生じる。 | 保持されたメッセージ | 不明 | 応答の集約 ノード |
最後の応答が到着したとき以外に、集約の完成したことが判明した。 | すべての応答を含む集約された応答メッセージ | Out | 応答の集約 ノード |
集約フローで生じるエラーを処理するには、メッセージ・フローのそれぞれのノードのすべてのインスタンスにおいて、これらの例外をキャッチする必要があります。
手順
結果
以下の ESQL 例は、MQMD ヘッダーを追加して、 応答の集約 ノードが受信した応答を渡す方法を示しています。
-- Add MQMD
SET OutputRoot.MQMD.Version = 2;
.
-- Include consolidated replies in the output message
SET OutputRoot.XMLNS.Data.Parsed = InputRoot.ComIbmAggregateReplyBody;
.
出力メッセージ内の例外に関する情報を伝搬するには、 計算 ノードの 計算モード プロパティーを、 例外を含む値に設定します。