Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


7.10.1 Message-driven Beanによるメッセージ処理の特徴

Message-driven Beanは,クライアントアプリケーションであるプロデューサーから直接呼び出すことはできません。プロデューサーは,送信先にメッセージを送信することで,Message-driven Beanを間接的に呼び出します。

Message-driven Beanは基本的に状態を保持せず,また特定のクライアントアプリケーションと関連づけられて処理を実行されることがありません。このため,送信されたメッセージは複数のMessage-driven Beanによって同時に並行処理できます。

注意事項
  • Message-driven Beanの複数のインスタンスの同時実行によって,複数のメッセージは並行処理されます。Message-driven Beanクラスのインスタンスによって実行される処理の順序性は保証されません。

  • 大量のメッセージをMessage-driven Beanに配信しようとしたときに,RejectedExecutionException例外が発生することがあります。この例外が発生した場合,一部のメッセージはMessage-driven Beanに配信されません。この状況を避けるためには,CJMSPリソースアダプタの実行時属性として,スレッドプールの最大数をMessage-driven Beanのインスタンス数以上に設定してください。

  • Message-driven Beanのインスタンス数やエンドポイント数を設定することによって,メッセージの送信が遅れることがあります。この問題を防ぐために,CJMSPリソースアダプタで実行するスレッド数,Message-driven Beanのインスタンス数,およびエンドポイント数を次の式に従って設定してください。式を示します。

    Message-driven Beanのインスタンス数の総数<=CJMSPリソースアダプタで実行するスレッド数
     
    Message-driven Beanのインスタンス数>=Message-driven Beanのエンドポイント数

    なお,Message-driven Beanのインスタンス数は,cosminexus.xmlまたはMessageDrivenBean属性ファイルで定義します。Message-driven Beanのエンドポイント数は,DDで定義します。CJMSPリソースアダプタのスレッド数の定義はConnector属性ファイルで定義します。

    cosminexus.xmlの詳細は,マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション/リソース定義)」の「2. アプリケーション属性ファイル(cosminexus.xml)」を参照してください。MessageDrivenBean属性ファイルの詳細は,マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション/リソース定義)」の「3.6 MessageDrivenBean属性ファイル」を参照してください。Connector属性ファイルの詳細は,マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション/リソース定義)」の「4.1 Connector属性ファイル」を参照してください。

  • CJMSプロバイダを使用して,Message-driven Beanにメッセージを配信する場合,メッセージ配信中にCJMSPブローカーを停止すると,CJMSPブローカーを再起動してもメッセージは配信されません。CJMSPブローカーを停止した場合は,J2EEサーバを再起動してください。