WebSphere MQ バージョン 6.0 に接続されたアクティベーション・スペックまたは ASF リスナー・ポートを使用した厳密なメッセージ順序付け

厳密なメッセージ順序付けは、メッセージ駆動型 Bean アプリケーションを WebSphere MQ メッセージング・プロバイダーにデプロイするときに、非順次に着信したメッセージを処理するための特別な機能がアプリケーションにコーディングされていない場合に行うことができます。

WebSphere® Application Server バージョン 7 以降では、リスナー・ポートは安定化されています。詳しくは、安定化されたフィーチャーに関する項目を参照してください。リスナー・ポートを使用する WebSphere MQ メッセージ駆動型 Bean のデプロイメント構成を、アクティベーション・スペックを使用する構成に移行する準備を行う必要があります。[AIX Solaris HP-UX Linux Windows][IBM i]非 ASF モードのアクティベーション・スペックの構成方法について詳しくは 『非 ASF モードのアクティベーション・スペックの構成』を参照してください。 ただし、アプリケーションを WebSphere Application Server バージョン 7 より前のアプリケーション・サーバーで実行する必要がないと確認するまでは、このマイグレーションを開始しないでください。例えば、1 つのアプリケーション・サーバー・クラスターにバージョン 6.1 のメンバーとそれより新しいバージョンのメンバーがある場合は、クラスター内のすべてのアプリケーション・サーバーをその新しいバージョンにマイグレーションするまでは、そのクラスター上のアプリケーションを、アクティベーション・スペックを使用するようにマイグレーションしないでください。

このシナリオでは、以下のことを前提としています。
  • メッセージ駆動型 Bean (MDB) アプリケーションはトランザクション・タイプである。
  • WebSphere MQ キューのバックアウトしきい値 (BOTHRESH) が 0 に設定されている。
  • WebSphere MQ バージョン 6.0 を使用している。

順序付けられた配信のための WebSphere Application Server の構成

  • リスナー・ポートを使用している場合、WebSphere Application Server のリスナー・ポートの「最大セッション (Maximum sessions)」を 1 に設定する必要があります。
  • アクティベーション・スペックを使用している場合、WebSphere Application Server のアクティベーション・スペックの「最大サーバー・セッション (Maximum server sessions)」を 1 に設定する必要があります。

この構成に関する重要な情報

  • ASF リスナー・ポートおよび WebSphere MQ アクティベーション・スペックには、連動してメッセージ配信を実行する 2 つの異なるパーツがあります。これら 2 つのパーツは、キュー・マネージャーからは別個のアプリケーションと見なされます。
    • 1 つ目のパーツは、着信したメッセージをただちに検出しますが、それらをコンシュームしません。 代わりに、それらのメッセージを 2 つ目のパーツにディスパッチします。
    • 2 つ目のパーツは、サーバーのセッション・プールであり、アプリケーションのトランザクション内でメッセージを処理するためにスレッドを割り振り、それを MDB の onMessage() メソッドに配信します。
    注: ASF リスナー・ポートまたはアクティベーション・スペックが WebSphere MQ バージョン 6.0 以前のキュー・マネージャーに接続している場合、比較的効果の低い (ブラウズ・カーソルに基づいた) ポーリング・メカニズムを使用してキュー上のメッセージが検出されます。

メッセージが非順次で着信可能な状況

このデプロイメントでは、以下の状況の場合、メッセージが非順次で着信可能です。
  • トランザクション・リカバリーの間は、メッセージが非順次に配信される可能性があります。
    注: このシナリオは、特定のイベント・セットが特定の順序で起きることを必要とするので、ほとんど発生しません。 しかし、アプリケーションの操作にとって順序付けられたメッセージ配信が重要である場合には、考慮する必要があります。
    • 以下のいずれかのコンポーネントが障害からリカバリーする間に、このデプロイメント・オプションで非順次メッセージ配信が起きる可能性があります。
      • MDB をホストしているアプリケーション・サーバー
      • WebSphere MQ キュー・マネージャー
      • アプリケーション・サーバーとキュー・マネージャーを接続しているネットワーク
    • 上記のコンポーネントのいずれかで、MDB トランザクションの 2 フェーズ・コミットの途中で障害が発生した場合、アプリケーション・サーバーのトランザクション・マネージャーは、コンポーネントが再び使用可能になったときに、キュー・マネージャーへの接続を再確立し、トランザクションを解決します。
    • このリカバリー・プロセスは非同期であり、トランザクション・リカバリー・プロセスが完了する前に MDB への新規メッセージの配信が開始することがあります。 トランザクションのリカバリーを行った結果、トランザクションのロールバックが行われる場合は、おそらく新規メッセージの送信が完了した後に、 メッセージが WebSphere MQ キューに返され、アプリケーションに再配信されます。
  • トランザクションのロールバック後に、キュー上の次の有効なメッセージが、ロールバックされたメッセージが再配信される前に配信される可能性があります。
    • ASF リスナー・ポートでは、「最大再試行数 (Maximum retries)」0 に設定し、ロールバック発生時にリスナー・ポートを停止することで、ロールバック後の非順次配信を防ぎます。 ただし、その後リスナー・ポートを手動で再始動する必要があります。
    • アクティベーション・スペックでは、「メッセージ配信に失敗した場合にエンドポイントを停止 (Stop endpoint if message delivery fails)」を選択して「エンドポイントをサスペンドする前の連続デリバリー失敗回数 (Number of sequential delivery failures before suspending endpoint)」0 に設定し、ロールバック発生時にメッセージ・エンドポイントを一時停止することで、ロールバック後の非順次配信を防ぎます。 ただし、その後 MDB のメッセージ・エンドポイントを手動で再開する必要があります。 詳しくは、WebSphere MQ インフォメーション・センターを参照してください。
  • 通常の操作の間に、複数のスレッドがトランザクションを使用して (異なるシーケンスの) 宛先にメッセージを送信している場合。
    • この動作は、WebSphere MQ ブラウズ・カーソルの操作によるものです。
    • メッセージが WebSphere MQ キューにコミットされると、その宛先に送信された別のメッセージが (まだ完了していないトランザクション内で) アンコミットされている間に、ブラウズ・カーソルがそのキューのより新しいメッセージに移動して、それより前のメッセージが最終的にコミットされても自動的にそのメッセージに戻ることはありません。このため、メッセージがキュー内でブラウズ・カーソルの後ろに表示されることがあります。
    • このシナリオが発生した場合、WebSphere MQ メッセージング・プロバイダーがキューを再スキャンしてブラウズ・カーソルの後ろに表示されているメッセージを検出する前に、シーケンス内のより新しいメッセージが MDB に送信される可能性があります。
  • アクティベーション・スペックや ASF リスナー・ポートによってモニターされている WebSphere MQ キューで、メッセージ・デリバリー・シーケンス属性 (MSGDLYSEQ) が優先順位に設定されている場合、以下の理由によってメッセージ順序付けが失敗する可能性があります。
    • 複数の優先順位を持つメッセージがキューに送信された場合、優先順位が低い方のメッセージが、優先順位が高い方のメッセージよりも先に配信されることがあります。この動作は、WebSphere MQ ブラウズ・カーソルの操作が原因で起こります。ブラウズ・カーソルは、優先順位が最上位にあるすべての有効なメッセージの間を移動してから、それより低い優先順位のメッセージに移動します。 ブラウズ・カーソルがより低い優先順位のメッセージを現行でブラウズしている間に、それらより高い優先順位のメッセージが着信した場合、そのキュー上のより低い優先順位のメッセージがすべて配信されるまで、それらのより高い優先順位のメッセージが配信されない可能性があります。
    • 「メッセージ・デリバリー・シーケンス」が「FIFO」に設定されたキューをブラウズする ASF リスナー・ポートやアクティベーション・スペックでは、WebSphere MQ がキュー上のメッセージを優先順位ではなく到着順で順序付けするので、このような問題は起こりません。

クラスター化されたデプロイメントに関する考慮事項

  • アプリケーション・サーバーには、このアクティベーションを自動的に管理できる機能がないので、1 つのクラスター・メンバーについてのみ MDB をアクティブ化することができます。
  • アプリケーションの始動状態の設定とは別個に、リスナー・ポートの始動状態を「停止 (stopped)」に設定することができます。
  • アプリケーション、ASF リスナー・ポート、および MBean インターフェースとのメッセージ・エンドポイントは、wsadmin スクリプトや、Java™ コードの com.ibm.websphere.management.AdminClient インターフェースを使用して手動で開始および停止することができます。

トピックのタイプを示すアイコン 概念トピック



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