例 2: システム・リソースが使用不可になったら MDB を自動的に停止する

システム・リソースが使用不可になった場合に備えるため、少数のメッセージ障害の後にメッセージ駆動型 Bean (MDB) を自動的に停止して問題についてのアラートを出すようにシステムを構成します。

始める前に

このタスクは、外部システム・リソースと対話するメッセージ駆動型 Bean (MDB) を含んでいるエンタープライズ・アプリケーションがデプロイ済みであることを前提としています。

MDB が listen している宛先は、例外宛先を使用する必要があります。 この例外宛先は、システム・デフォルトにするか、または特にその宛先のために構成した宛先とすることができます。

このタスクを実行するには、以下の情報が必要です。
  • MDB を含んでいるエンタープライズ・アプリケーション。
  • 従属外部システム・リソース。
  • 連続障害メッセージのしきい値」に値 3。 これはメッセージ配信の連続障害の最大数で、その数を超えると MDB が停止します。 このプロパティーは、メッセージの集合に 適用されます。
  • 障害のあるメッセージの再試行間の遅延」に値 5000。 これは、障害のあるメッセージが MDB に送達可能になるまでの時間 (ミリ秒) です。 連続障害メッセージのしきい値および最大並行性が 1 に設定されている場合を除き、他のメッセージはこの期間内に送達される可能性があります。
  • 1 メッセージ当たりの最大デリバリー失敗数」に値 5。 これは、その数を超えると、メッセージが本来の宛先から例外宛先に転送される、メッセージ処理試行の失敗の最大数です。 このプロパティーは、個々のメッセージに 適用されます。

このタスクについて

このシナリオでは、エンタープライズまたはビジネス・レベル・アプリケーションは、連続的に実行しているシステムであり、外部システム・リソースにアクセスするために、デプロイされた MDB を使用しています。

外部リソースで問題が発生し、使用可能でなくなると、デプロイされた MDB はそのリソースにアクセスできなくなり、この MDB と関連付けられたトランザクションはロールバックされ、メッセージ msg1 はキューに書き戻されます。

メッセージ msg1 は、障害のあるメッセージの再試行間の遅延の設定に従って 5 秒間再試行を遅延するため隠蔽され、それから MDB に対して使用可能になります。

その間に、MDB は、キューの次のメッセージ、msg2 を処理します。 外部リソースはまだ使用不可のままなので、このメッセージの処理でも障害が起こります。メッセージ・トランザクションはロールバックされ、5 秒間隠蔽されます。 キューにある次のメッセージ、msg3 も処理され、障害が起こり、同様に隠蔽されます。

隠蔽されたメッセージの数が連続障害メッセージのしきい値に達すると、隠蔽されたメッセージの 1 つが再度使用可能になるまで、MDB はそれ以上のメッセージを処理しなくなります。

msg1 の障害のあるメッセージの再試行間の遅延が満了になると、msg1 は隠蔽が解除され、再処理されます。 リソースはまだ使用不可なままなので、再度隠蔽されます。msg2 および msg3 についても同じことが起こります。

メッセージは、1 メッセージ当たりの最大デリバリー失敗数限度 (このシナリオでは 5 回) より 1 だけ小さい回数だけロールバックされると、障害メッセージであると見なされます。 したがって、msg1 が 4 回目に隠蔽解除され、 ロールバックされ、再び隠蔽されると、連続障害カウントが増やされます。 その時点で msg2 は隠蔽解除され、ロールバックされ、再び隠蔽されます。同様に、 msg3 は隠蔽解除され、ロールバックされ、再び隠蔽されます。連続障害カウントは連続障害メッセージのしきい値に達し、MDB が自動的に停止します。 JCA MBean によって JMX 通知が発行され、 ログ・エントリーがシステム管理者に MDB が停止したことを警告 します。

注: このシナリオでは、システム・リソースが約 20 秒間使用不可になると、MDB は自動的に停止します。 システム・リソースの使用不可時間がそれより短い場合は、連続障害カウントが「連続障害メッセージのしきい値」に達することはなく、メッセージは再試行のいずれかで正常に処理されます。実質的に、システムでは、手操作による介入なく、どのメッセージも例外宛先に送られずに正常に処理が継続されます。

手順

  1. MDB が含まれているデプロイ済みエンタープライズ・アプリケーションまでナビゲートします。
  2. MDB からその JMS アクティベーション・スペックまでナビゲートします。 リソース (Resources) ->「JMS」 ->「アクティベーション・スペック」 ->「activation_specification_nameをクリックします。
  3. 連続障害メッセージのしきい値」に値 3 を入力します。
  4. 障害のあるメッセージの再試行間の遅延」に値 5000 を入力します。
  5. 構成を保存します。
  6. MDB が listen している宛先までナビゲートします。 以下のいずれかのパスを適宜クリックします。
    • サービス統合 ->「バス」 -> 「bus_name -> [宛先リソース (Destination resources)]「宛先 (Destinations)」 -> 「queue_name
    • サービス統合 ->「バス」 -> 「bus_name -> [宛先リソース (Destination resources)]「宛先 (Destinations)」 ->「topic_space_name
  7. 1 メッセージ当たりの最大デリバリー失敗数」に値 5 を入力します。
  8. 変更をマスター構成に保存します。
  9. MDB (またはエンドポイント) が休止したことを示す JMX 通知とログ・エントリーを受け取ったら、MDB が使用していたシステム・リソースの問題を調査します。 MDB が休止している間は、例外宛先にメッセージは送信されず、停止したデータベースに関連するエラー・メッセージは何もコンソールに表示されません。
  10. 障害があったシステム・リソースが使用可能になったら、 そのシステム・リソースを再始動します。
  11. もう一度管理コンソールにログオンし、同じエンタープライズ・アプリケーションまでナビゲートし、MDB の管理パネルで「再開」をクリックします。 スクリプトおよび JCA MBean を使用して MDB を再開することもできます。 最初の JMX 通知とログ・エントリーに、どの MBean を使用して MDB を再開するのかが示されます。 宛先にあるメッセージで MDB の駆動が開始します。

タスクの結果

システムは、外部リソース障害から保護されるように 構成されます。

次のタスク

MDB が再開されると、JCA MBean は、MDB が再開したことを示す JMX 通知を発行します。 キューにあるメッセージがコンシュームされ、 障害のあったメッセージは再試行され、トランザクションはコミットします。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjn_mdb_0001_Ex2
ファイル名:tjn_mdb_0001_Ex2.html