メッセージ・エンドポイントによるメッセージの管理
メッセージ・エンドポイントとしてデプロイされるメッセージ駆動型 Bean (MDB) のメッセージ配信を管理します。メッセージ・エンドポイント は、Java™ Platform, Enterprise Edition (Java EE) Connector Architecture (JCA) バージョン 1.5 に準拠するインバウンド・リソース・アダプターの Managed Bean (MBean) です。
このタスクについて
- 失敗したメッセージは、listen 中のエンドポイントに再度配信する、または失敗した メッセージを処理する代替宛先にリダイレクトするなど、追加処理が必要です。また、 リソース・アダプターが回数を制限されずに、メッセージをエンドポイントに再配信する場合も あります。
- メッセージのリダイレクトでは、失敗したメッセージの処理専門の宛先 (キュー とリスナー) の実装、およびメッセージの失敗を検出するロジックを必要とします。 メッセージのリダイレクトは複雑であるため、エラーが発生しやすく、 しかも計算コストが高くなる可能性があります。
特定のメッセージ・エンドポイントを無効化 (一時停止) および再有効化 (再開) する機能を使うと、管理者がエンドポイントを無効化して、失敗するメッセージの処理を行わせないようにできるため、これらの問題が緩和されます。 メッセージ・エンドポイントが非アクティブにされたときに、問題を起こしているリソースを 修復して、エンドポイントを再度アクティブにし、メッセージ要求の処理を再開できます。 トラブルシューティングの間、エンドポイントをホスティングしているリソース・アダプターまたは アプリケーションには影響を与えません。
WebSphere® MQ に接続している場合は、アクティベーション・スペック内の WAS_EndpointInitialState カスタム・プロパティーを使用して、メッセージ・エンドポイントを非活動状態で始動することもできます。このプロパティーに Inactive を設定すると、メッセージ駆動型 Bean は宛先と接続しますが、メッセージの受信を開始しません。 この設定を使用して、メッセージ処理の開始前に、特定タスクの完了、サービスの開始、 または検査の実行が必要であることが分かっているときに、メッセージ・エンドポイントを自動的に非アクティブにします。 操作中に一時停止したメッセージ・エンドポイントを再度アクティブにする場合と同じ方法で、 メッセージ・エンドポイントをアクティブにします。
手順
タスクの結果
- 非永続トピックでの MDB リスニング (構成に依存): メッセージ・エンドポイント の非アクティブ化 (一時停止) によって暗黙に示される動作は、多くの場合、実行している機能に 依存します。例えば、サービス統合バスで非永続トピックを listen するようにメッセージ駆動型 Bean を構成した場合にメッセージ・エンドポイントを非アクティブにすると、アプリケーションの停止と類似した状態になり、その結果サブスクリプションがクローズします。 つまり、メッセージ・エンドポイントが一時停止している間に 公開されるメッセージは、メッセージ駆動型 Bean によって受信されないということです。
- クラスター化されたメッセージ駆動型 Bean (トポロジーに依存): このシナリオ では、メッセージ駆動型 Bean のアプリケーションは、サーバーのクラスターにデプロイ されています。指定されたメッセージ・エンドポイント MBean が制御できるのは、そのクラスターのいずれかのサーバーにおける MDB の動作のみなので、メッセージの処理が停止されるサーバーは 1 つ だけになります。メッセージング構成および使用中の固有のリソース・アダプターに応じて、 一時停止されているメッセージ・エンドポイントによって消費されているメッセージは、 クラスターのアクティブ・メッセージ・エンドポイントによって消費されることもあれば、一時停止 されているメッセージ・エンドポイントが再開するまで、消費されないままでいることもあります。
- クラスター化されたメッセージ駆動型 Bean、非クラスター化キュー: このシナリオでは、サーバーのクラスターに同じメッセージ駆動型 Bean がデプロイされています。 これは、異なるメッセージ駆動型 Bean に同じメッセージ選択基準がある場合に似ています。 ただし、メッセージ駆動型 Bean が論理的に同じメッセージ駆動型 Bean である場合を 除きます。エンドポイントを一時停止しても、メッセージの受信を 停止するサーバーは 1 つだけで、その他のメッセージ駆動型 Bean はすべてのメッセージを受信します。孤立する メッセージはありません。 すべてのエンドポイントを停止するには、クラスターの 各サーバーにローカルのメッセージ・エンドポイントを停止するよう指示する必要があります。
- クラスター化されたメッセージ駆動型 Bean、クラスター化されたキュー: このシナリオでは、各メッセージ駆動型 Bean は、キューの異なる区画からメッセージを プルしています。WebSphere MQ およびサービス統合バスを経由するメッセージングの機能は、似ているようで実際には異なります。 WebSphere MQ を使用している場合にエンドポイントを 1 つ停止すると、メッセージ駆動型 Bean のその他のインスタンスでメッセージを受信できなくなります。サービス統合バスでは、一時停止されたエンドポイント からのメッセージは、その他のメッセージ駆動型 Bean にリダイレクトされます。