MQeInput のエラー処理

MQeInput ノードは、 持続メッセージとトランザクション・メッセージのエラーを処理する際に独特のアクションを実行します。 (非トランザクション・メッセージで検出されるエラーは、 入力ノードにあるエラーの管理で説明されているとおりに処理されます。)

このアクションについては、以下の表で要約されています。

エラー・イベント failure ターミナルに接続している failure ターミナルに接続していない catch ターミナルに接続している catch ターミナルに接続していない
ノードが内部エラーを検出 fail フローがエラーを処理 ノードが再試行 適用不可 適用不可
ノードがメッセージを out ターミナルに伝搬すると、out フローで例外が発生する 適用不可 適用不可 ノードが再試行し、catch ターミナルに伝搬する ノードが再試行
ノードがメッセージを catch ターミナルに伝搬すると、catch フローで例外が発生する fail フローがエラーを処理 ノードが再試行 適用不可 適用不可
ノードがメッセージを failure ターミナルに伝搬すると、fail フローで例外が発生する 適用不可 適用不可 ノードがメッセージを代替キューに書き込む ノードがメッセージを代替キューに書き込む

再試行処理

メッセージが入力キューへロールバックされると、ノードは再試行処理を試みます。 ノードはメッセージが以前にバックアウトされているかどうかを調べ、バックアウトされている場合には、バックアウト・カウントがバックアウトしきい値に達しているか (等しいか) どうかを調べます。 各メッセージのバックアウト・カウントは、MQMD の WebSphere MQ によって保守されます。

キューの作成時に、バックアウトしきい値属性 BOTHRESH を指定 (または、 デフォルトで 0 になるように) します。 デフォルト値 0 を受け入れると、ノードはこの値を 1 に増やします。 また、現行値を検出できなかった場合にもこの値を 1 に設定します。 これは、メッセージが以前にバックアウトされていない場合、それが少なくとも 1 回バックアウトおよび再試行されることを意味します。

  1. バックアウトしきい値に達していない場合、ノードはキューから再度メッセージを受け取ります。 失敗した場合は、内部エラーとして処理されます (前述のとおりです)。 正常に完了した場合、ノードはメッセージを out フローに伝搬します。
  2. バックアウトしきい値に達すると、次のようになります。
    • ノードは、エラーが発生した状況に応じて、 メッセージを catch または failure ターミナルに伝搬することが可能であればそうします (前述のとおりです)。
    • それができない場合、ノードは、メッセージを優先順位に従って使用可能なキューに書き込みます。
      1. 入力キューのバックアウト・リキュー名 (キュー属性 BOQNAME) が定義されていれば、 メッセージはそのリキューに入れられます。
      2. バックアウト・キューが定義されていない場合、あるいはノードが識別できない場合、送達不能キュー (DLQ) が定義されていると、メッセージはそこに入れられます。 (ブローカーのキュー・マネージャーが mqsicreatebroker コマンドによって定義されている場合には、 DLQ がデフォルト名 SYSTEM.DEAD.LETTER.QUEUE で定義されており、このキュー・マネージャーに使用可能です。)
      3. キューが存在しないなどの MQPUT エラーが発生しているため、 またはキューがノードによって認識されないために、 メッセージをこれらのキューのどちらにも書き込むことができない場合、 メッセージを安全に処理することはできません (メッセージを失う危険があります)。

        メッセージは廃棄できないため、メッセージ・フローはメッセージのバックアウトを試行し続けます。 エラー状態は、ローカル・エラー・ログにエラーを書き込むことによって記録されます。 2 回目以降にこのエラーが示されるときには、 入力ブリッジ・キューのメッセージにある BackoutCount の値が継続的に増えていきます。

        キューが存在しないためにこの状態が発生している場合、上に挙げられているいずれかのバックアウト・キューを定義することによって解決できます。 何がメッセージの処理を妨げているのかがはっきりしている場合は、 一時的に BOTHRESH 属性の値を増やすことができます。このようにすることによって、メッセージには強制的に通常の処理が実行されます。

関連概念
メッセージ・フロー

関連タスク
メッセージ・フローのエラー処理
入力ノードにあるエラーの管理
TryCatch ノードにおける例外のキャッチ
サブフローの使用
メッセージ・フローの作成
メッセージ・フローの内容の定義

関連資料
組み込みノード
WebSphere MQ Mobile Transport