ASF モードでのメッセージの処理方法

ASF モードでは、サーバーのセッションおよびスレッドは、メッセージ駆動型 Bean (MDB) に適したメッセージが検出された場合の処理のみに割り振られます。 MDB が同時に処理できるスレッドの数は、リスナー・ポートの「最大セッション数」プロパティーの値によって決まります。

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

[AIX Solaris HP-UX Linux Windows][IBM i]
以下の図に、メッセージ・リスナー・サービスが ASF モードで動作している場合に、WebSphere Application ServerIBM MQ の間でメッセージングがどのように行われるかを示します。
図 1. 分散システムおよび IBM i システムにおける ASF モードでのメッセージ処理
この図は、周囲のテキストで説明されています。
図に示されているように、メッセージ・リスナー・サービスが ASF モードで動作しているときには、メッセージは、以下のように処理されます。
  1. リスナー・ポートが開始されると、このポートは IBM MQ キュー・マネージャーへの接続を開いて、内部キュー・エージェントを作成します。
  2. キュー・エージェントが、メッセージがないか、JMS 宛先を listen します。
  3. キュー・エージェントがメッセージを検出します。
  4. キュー・エージェントは、メッセージがリスナー・ポートを使用している MDB に適しているかどうかを検査します。
  5. メッセージが MDB に適している場合、リスナー・ポートは、メッセージ・リスナー・サービス・スレッド・プールからスレッドを割り振り、さらにアプリケーション・サーバーのサーバー・セッション・プールからサーバー・セッションを割り振ります。 リスナー・ポートが開始してから初めてサーバー・セッションが使用された場合、リスナー・ポートは JMS プロバイダーへの接続を開きます。 割り振られたサーバー・セッションは、割り振られたスレッド上で稼働します。
  6. キュー・エージェントがメッセージの ID をサーバー・セッションに渡します。 次に、メッセージの listen を再度開始します。
  7. サーバー・セッションがメッセージ ID を使用して宛先からメッセージを取得します。
  8. サーバー・セッションが MDB の onMessage() メソッドを呼び出してメッセージを処理します。
  9. メッセージが処理されると、サーバー・セッションは終了し、アプリケーション・サーバー・セッション・プールに戻ります。 サーバー・セッションが JMS プロバイダーに対して開いた接続は、次回の使用でサーバー・セッションがその接続を再確立する必要がないように、開いたままの状態になります。
  10. スレッドが終了し、メッセージ・リスナー・サービス・スレッド・プールに戻ります。

MDB が同時に処理できるスレッドの数は、リスナー・ポートの「最大セッション数」プロパティーの値によって決まります。「最大セッション数」をデフォルト値の 1 に設定した場合は、MDB は一度に 1 つのメッセージのみを処理できます。したがって、最初のメッセージの処理が完了する前にキュー・エージェントが 2 番目のメッセージを検出すると、最初のメッセージの処理が完了してサーバー・セッションが使用可能になるまで、キュー・エージェントは 2 番目のメッセージをブロックします。

「最大セッション数」1 より大きい値に設定することで、ASF モードで複数のメッセージを同時に処理できます。例えば、「最大セッション数」2 に設定した場合は、メッセージは、以下のように処理されます。
  1. キュー・エージェントが最初のメッセージを検出し、最初の例のようにスレッドとサーバー・セッションを割り振ります。 メッセージは、MDB の onMessage() メソッドを使用して処理されます。
  2. 最初のメッセージの処理中に、キュー・エージェントがメッセージの listen を再度開始します。
  3. キュー・エージェントが 2 番目のメッセージを検出し、2 番目のスレッドと 2 番目のサーバー・セッションを割り振ります。 メッセージは、MDB の onMessage() メソッドを使用して処理されます。
  4. 最初のメッセージが処理されると、最初のサーバー・セッションは終了し、サーバー・セッション・プールに戻ります。 最初のスレッドは終了し、スレッド・プールに戻ります。
  5. 2 番目のメッセージが処理されると、2 番目のサーバー・セッションは終了し、サーバー・セッション・プールに戻ります。 2 番目のスレッドは終了し、スレッド・プールに戻ります。
[z/OS]

以下の図に、メッセージ・リスナー・サービスが ASF モードで動作している場合に、WebSphere Application ServerIBM MQ の間でメッセージングがどのように行われるかを示します。

図 2. z/OS システムにおける ASF モードでのメッセージ処理
この図は、周囲のテキストで説明されています。
図に示されているように、メッセージ・リスナー・サービスが ASF モードで動作しているときには、メッセージは、以下のように処理されます。
  1. リスナー・ポートが開始されると、このポートは IBM MQ キュー・マネージャーへの接続を開いて、内部キュー・エージェントを作成します。
  2. キュー・エージェントが、メッセージがないか、JMS 宛先を listen します。
  3. キュー・エージェントがメッセージを検出し、このメッセージがリスナー・ポートを使用している MDB に適しているかどうかを検査します。
  4. メッセージが MDB に適している場合、キュー・エージェントはメッセージ ID を作業レコードに渡します。 次に、作業レコードがワークロード管理 (WLM) キューに送られます。
  5. キュー・エージェントがメッセージの listen を再度開始します。
  6. WLM キューがサーバント領域内の ASF ディスパッチャーを開始して作業レコードを処理します。
  7. ASF ディスパッチャーがサーバー・セッション・プールからサーバー・セッションを割り振ります。
  8. サーバー・セッションが作業レコードのメッセージ ID を使用して、宛先からメッセージを取得します。
  9. サーバー・セッションが MDB の onMessage() メソッドを呼び出してメッセージを処理します。
  10. メッセージが処理されると、サーバー・セッションは終了し、アプリケーション・サーバー・セッション・プールに戻ります。 サーバー・セッションが JMS プロバイダーに対して開いた接続は、次回の使用でサーバー・セッションがその接続を再確立する必要がないように、開いたままの状態になります。
  11. スレッドが終了し、メッセージ・リスナー・サービス・スレッド・プールに戻ります。

MDB が同時に処理できるスレッドの数は、リスナー・ポートの「最大セッション数」プロパティーの値によって決まります。「最大セッション数」をデフォルト値の 1 に設定した場合は、MDB は一度に 1 つのメッセージのみを処理できます。したがって、最初のメッセージの処理が完了する前にキュー・エージェントが 2 番目のメッセージを検出すると、最初のメッセージの処理が完了してサーバー・セッションが使用可能になるまで、キュー・エージェントは 2 番目のメッセージをブロックします。

「最大セッション数」1 より大きい値に設定することで、ASF モードで複数のメッセージを同時に処理できます。例えば、「最大セッション数」2 に設定した場合は、メッセージは、以下のように処理されます。
  1. キュー・エージェントが最初のメッセージを検出し、最初の例のように作業レコードをセットアップします。
  2. 作業レコードが WLM キューに送られ、ASF ディスパッチャーがサーバント領域内にセットアップされます。
  3. ASF ディスパッチャーがサーバー・セッションを割り振り、メッセージが MDB の onMessage() メソッドを使用して処理されます。
  4. 最初のメッセージの処理中に、キュー・エージェントがメッセージの listen を再度開始します。
  5. キュー・エージェントが 2 番目のメッセージを検出し、2 番目のスレッドと 2 番目のサーバー・セッションを割り振ります。 メッセージは、MDB の onMessage() メソッドを使用して処理されます。
  6. 最初のメッセージが処理されると、最初のサーバー・セッションは終了し、サーバー・セッション・プールに戻ります。 最初のスレッドは終了し、スレッド・プールに戻ります。
  7. 2 番目のメッセージが処理されると、2 番目のサーバー・セッションは終了し、サーバー・セッション・プールに戻ります。 2 番目のスレッドは終了し、スレッド・プールに戻ります。

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



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