第31章 リソースアダプター

Jakarta Connectors Resource Adapter を使用すると、アプリケーションはどのメッセージングプロバイダーとも通信できます。MDB や他の Jakarta Enterprise Beans、さらには Servlet などの Jakarta JEE コンポーネントがメッセージを送受信する方法を設定します。

31.1. 統合された Artemis リソースアダプターについて

JBoss EAP 7 には統合された Artemis リソースアダプターが含まれており、これは pooled-connection-factory 要素を使用してリソースアダプターの送受信接続を設定します。

送信接続

送信接続は、pooled-connection-factory 要素を使用して定義します。これは、Jakarta Enterprise Beans およびサーブレットによって Jakarta EE デプロイメントで使用され、キューまたはトピックからメッセージを送受信します。接続ファクトリーから作成される接続はアプリケーションサーバーのスコープ内に作成されるため、以下のようにアプリケーションサーバー機能を使用できます。

  • 接続プール
  • アプリケーションサーバーによって定義されるセキュリティードメインを使用した認証
  • トランザクションマネージャーを使用した XA トランザクションへの参加

これらの機能は、InVmConnectionFactoryRemoteConnectionFactory のような基本の connection-factory では使用できないため、これは pooled-connection-factory との大きな違いです。また、pooled-connection-factory を使用して定義される接続ファクトリーでは、外部スタンドアロン JMS クライアントから JNDI を使用してルックアップを行うことができないことに注意してください。

受信接続

受信接続は、メッセージ駆動 Bean (MDB) がキューまたはトピックからメッセージを受信するためにのみ使用されます。MDB は、キューまたはトピックをリッスンするステートレスセッション Bean です。onMessage(Message message) 公開メソッドを実装する必要があります。これは、メッセージがキューまたはトピックに送信されるときに呼び出されます。Artemis リソースアダプターは、キューまたはトピックからメッセージを受信して onMessage(Message message) メソッドに渡す役割を担います。この目的のため、受信接続を設定して、統合された Artemis サーバーの場所と追加要素を定義します。

各 MDB セッション Bean は、クライアントスレッドプールのスレッドを使用して、宛先からのメッセージを消費します。最大プールサイズが定義されていない場合は、CPU コアプロセッサー数の 8 倍になるように決定されます。テストスイートなど、多くの MDB セッションを持つシステムの場合、これによりスレッドが枯渇し、MDB がプールからの空きスレッドを待機するように強制する可能性があります。管理 CLI を使用して、クライアントスレッドプールの最大プールサイズを増やすことができます。以下のコマンドは、最大クライアントスレッドプールサイズを 128 に設定します。

/subsystem=messaging-activemq:write-attribute(name=global-client-thread-pool-max-size,value=128)

クライアントスレッドプールサイズを設定する方法は、「クライアントスレッド管理」を参照してください。MDB に関する詳細は、JBoss EAP の『Developing EJB Applications』の「Message Driven Beans」を参照してください。