「WebSphere MQ のメッセージ・スプリッター: 一方向 (XML 用)」パターンのエラー・サブフロー
エラーが発生した場合には、エラー・サブフローを使ってエラー・メッセージをルーティングします。
エラー・メッセージをルーティングするには、以下のいずれかのアクションを使用します。
- ルーティングできないすべてのメッセージ・エレメントを、別個の正しくないメッセージ・キューに保存して、後続のエレメントの処理を続ける
- トランザクションを取り消して入力メッセージをロールバックする
Routing フローで失敗が発生した場合、(1 つのメッセージ・エレメントを含む) 伝搬されるメッセージは、Route サブフローの Failure ターミナルに送信されます。
エラー状況が Environment.PatternVariables.FailureStatus に記録され、正しくないエレメントの数が増分されます。
「正しくないメッセージ・アクション」を選択して、失敗後に実行するアクションを以下のように指定します。
- 保管
- Failure ノードが MQOutput ノードに接続され、メッセージ・エレメントは正しくないメッセージ・キューに書き込まれます。
Message Splitter Compute ノード内の処理ループに制御が戻されて処理が続きます。
- すべてのレコードが処理されると、Message Splitter Compute ノードは Error サブフローに制御を渡し、そこでは正しくないメッセージ・エレメントが保存されているかどうか検査されます。
正しくないメッセージ・エレメントが保存されており、エラー・メッセージが必要な場合には、エラー状態のエレメントの数を示すエラー・メッセージが生成されます。
- キャンセル
- Route サブフローの Failure ノードは接続されず、ルーティング・エラーが Message Splitter Compute ノードに返されます。ここでは、失敗状況が検出されて、例外が生成されます。
ルーティング障害以外のすべての例外では、「キャンセル」アクションが実行されます。これらの例外はすべてリカバリー不能で、処理を続けることは安全ではないと想定されています。
- エラー・メッセージが必要な場合、エラー・メッセージが作成されてエラー・キューに書き込まれます。例外の詳細は XML メッセージとして書き込まれます。この詳細には、以下の内容が含まれます。
- ブローカー名
- フロー名
- タイム・スタンプ
- 例外データの要約
- 入力メッセージおよび処理済みのすべてのメッセージ・エレメントをロールバックするユーザー・エラーが生成されます。
この場合、例えばバックアウト・キューを使用して、WebSphere MQ インフラストラクチャーの中にバックアウト処理を実装する必要があります。
すべてのメッセージ・エレメントが正常に書き込まれた後に発生する例外では、バックアウトは行われません。このタイプの例外は、エラー・メッセージまたはログ・メッセージで発生する可能性があります。