例 4: 例外宛先が指定されていない場合は MDB を自動的に停止する
システム・リソースが使用不可になった場合または問題メッセージに対して備えるため、メッセージ駆動型 Bean (MDB) を自動的に停止するようシステムを構成します。 メッセージ順序を維持するため、例外宛先は使用しません。
始める前に
MDB が listen している宛先で、例外宛先を使用してはなりません。 つまり、キューまたはトピック・スペース宛先の例外宛先は、なしで構成する必要があります。
- MDB を含んでいるエンタープライズ・アプリケーション。
- 従属外部システム・リソース。
- 「連続障害メッセージのしきい値」に値 1。
これはメッセージ配信の連続障害の最大数で、その数を超えると MDB が停止します。
このプロパティーは、メッセージの集合に
適用されます。注: このプロパティーが 1 より大きい値に設定されている場合、例外宛先がなしに構成されていると、システムは自動的に 1 にリセットします。
- 「障害のあるメッセージの再試行間の遅延」に値 5000。 これは、障害のあるメッセージが MDB に送達可能になるまでの時間 (ミリ秒) です。 「連続障害メッセージのしきい値」および最大並行性が 1 に設定されている場合を除き、他のメッセージはこの期間内に送達される可能性があります。
- 「1 メッセージ当たりの最大デリバリー失敗数」に対する許容値。つまり、メッセージ処理試行の失敗の最大数。このプロパティーは、個々のメッセージに 適用されます。
JCA MBean は JMX 通知を発行して、MDB が停止したこと、および MDB が再開したことを示します。 JCA MBean にメッセージ・リスナーを登録して、JMX 通知を受け取ることを検討してください。
このタスクについて
このシナリオでは、エンタープライズ・アプリケーションは、連続的に実行しているシステムであり、外部システム・リソースにアクセスするために、デプロイされた MDB を使用しています。
問題 メッセージ (このシナリオでは msg1) があると、それはキューに 戻されます。
msg1 は MDB ですぐに使用できるようになるのではなく、「障害のあるメッセージの再試行間の遅延」に設定された再試行遅延の間 (このシナリオでは 5 秒) は隠蔽されます。
隠蔽されたメッセージの数が「連続障害メッセージのしきい値」に達すると、隠蔽されたメッセージの 1 つが再度使用可能になるまで、MDB はそれ以上のメッセージを処理しなくなります。 このシナリオでは、msg1 が 隠蔽されるとすぐに、このしきい値に達します。
msg1 の「障害のあるメッセージの再試行間の遅延」が満了になると、msg1 は隠蔽が解除され、再処理されます。
このプロセスは、msg1 がその「1 メッセージ当たりの最大デリバリー失敗数」限度 (このシナリオでは 5 回) に達するまで繰り返されます。
msg1 が 4 回目に隠蔽解除され、ロールバックされ、再び隠蔽されると、「連続障害メッセージのしきい値」に達し、MDB は自動的に停止します。 JCA MBean によって JMX 通知が発行され、 ログ・エントリーがシステム管理者に MDB が停止したことを警告 します。