7.5. JMS 接続プールの使用
本セクションでは、JMS 接続/セッションプーリングオプションを説明します。JDBC の場合よりも選択肢が少なくなります。情報は次のトピックに分けてまとめられています。
XA リカバリーを使用するには、pax-jms-pool-transx
または pax-jms-pool-narayana
接続プールモジュールを使用する必要があります。
7.5.1. JMS 接続プールの使用 リンクのコピーリンクがクリップボードにコピーされました!
これまで、ブローカー固有の接続 ファクトリー を登録しました。接続ファクトリー自体は 接続ファクトリー のファクトリーであるため、org.ops4j.pax.jms.service.ConnectionFactoryFactory
サービスはメタファクトリーとして扱われる可能性があります。2 種類の接続ファクトリーを生成できるはずです。
-
javax.jms.ConnectionFactory
-
javax.jms.XAConnectionFactory
pax-jms-pool-*
バンドルは、org.ops4j.pax.jms.service.ConnectionFactoryFactory
サービスとスムーズに連携します。これらのバンドルは、org.ops4j.pax.jms.service.PooledConnectionFactoryFactory
の実装を提供し、これで、プロパティーと、元の org.ops4j.pax.jms.service.ConnectionFactoryFactory
を wrapper のように使用して、プール接続ファクトリーを作成できます。以下に例を示します。
public interface PooledConnectionFactoryFactory { ConnectionFactory create(ConnectionFactoryFactory cff, Map<String, Object> props); }
public interface PooledConnectionFactoryFactory {
ConnectionFactory create(ConnectionFactoryFactory cff, Map<String, Object> props);
}
以下の表は、プールされた接続ファクトリーファクトリーを登録するバンドルを示しています。この表では、o.o.p.j.p
は org.ops4j.pax.jms.pool
を表します。
バンドル | PooledConnectionFactoryFactory | プールキー |
---|---|---|
|
|
|
|
|
|
|
|
|
pax-jms-pool-narayana
ファクトリーは PooledJms(XA)PooledConnectionFactoryFactory
と呼ばれ、pooled-jms
ライブラリーに基づいています。これにより、XA リカバリーのための Narayana トランザクションマネージャーとの統合が追加されます。
上記のバンドルは接続ファクトリーファクトリーのみをインストールします。接続ファクトリー自体をインストールしないバンドルです。そのため、javax.jms.ConnectionFactory org.ops4j.pax.jms.service.PooledConnectionFactoryFactory.create()
メソッドを呼び出すものが必要になります。
7.5.2. pax-jms-pool-pooledjms 接続プールモジュールの使用 リンクのコピーリンクがクリップボードにコピーされました!
pax-jms-pool-pooledjms
バンドルの使用方法を理解することで、pax-jms-pool-pooledjms
バンドルだけでなく、pax-jms-pool-narayna
バンドルも使用できるので、pax-jms-pool-pool-pooledjms
としてほぼすべてが機能します。
pax-jms-config バンドルは以下を追跡します。
-
org.ops4j.pax.jms.service.ConnectionFactoryFactory
services -
org.ops4j.connectionfactory
factory PIDs -
pax-jms-pool-*
バンドルのいずれかによって登録されるorg.ops4j.pax.jms.service.PooledConnectionFactoryFactory
のインスタンス。
ファクトリー設定 に pool
プロパティーが含まれる場合、pax-jms-config
バンドルによって登録される最終的な接続ファクトリーはブローカー固有の接続ファクトリーです。pool=pooledjms
の場合、接続ファクトリーは以下のいずれかの内部でラップされます。
-
org.messaginghub.pooled.jms.JmsPoolConnectionFactory
(xa=false
) -
org.messaginghub.pooled.jms.JmsPoolXAConnectionFactory
(xa=true
)
pool
プロパティー (および非 xa/xa 接続ファクトリーの 1 つを選択するブール値 xa
プロパティー) のほかに、org.ops4j.connectionfactory
ファクトリー PID には pool.
で始まるプロパティーが含まれる場合があります。
pooled-jms
ライブラリーでは、これらの接頭辞が付いたプロパティーを使用して (接頭辞を削除した後に)、以下のインスタンスを設定します。
-
org.messaginghub.pooled.jms.JmsPoolConnectionFactory
または -
org.messaginghub.pooled.jms.JmsPoolXAConnectionFactory
以下のリストは、jms.
で始まるプロパティーと便利な構文を使用する pooled-jms
プール (org.ops4j.connectionfactory-artemis
ファクトリー PID) の現実的な設定です。
上記の設定では、pool
と xa
キーは ヒント (サービスフィルタープロパティー) で、登録された org.ops4j.pax.jms.service.PooledConnectionFactoryFactory
サービスのいずれかを選択します。pooled-jms
ライブラリーの場合、以下が行われます。
以下は、接続プールを作成して設定する手順の完全な例です。
必要な機能をインストールします。
karaf@root()> feature:install -v pax-jms-pool-pooledjms pax-jms-artemis Adding features: pax-jms-pool-pooledjms/[1.0.0,1.0.0] ...
karaf@root()> feature:install -v pax-jms-pool-pooledjms pax-jms-artemis Adding features: pax-jms-pool-pooledjms/[1.0.0,1.0.0] ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow jms
機能をインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファクトリー設定 を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pax-jms-config
が設定を処理してjavax.jms.ConnectionFactory
サービスに指定しているかどうかを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 接続ファクトリーを使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.3. pax-jms-pool-narayana 接続プールモジュールの使用 リンクのコピーリンクがクリップボードにコピーされました!
pax-jms-pool-narayna
モジュールはほぼすべてが pax-jms-pool-pooledjms
として行われます。XA と XA 以外のシナリオ向けに、pooled-jms 固有の org.ops4j.pax.jms.service.PooledConnectionFactoryFactory
をインストールします。唯一 の違いは XA シナリオでは、追加の統合ポイントがあることです。org.jboss.tm.XAResourceRecovery
OSGi サービスは、com.arjuna.ats.arjuna.recovery.RecoveryManager
によって取得されるように登録されます。
7.5.4. pax-jms-pool-transx 接続プールモジュールの使用 リンクのコピーリンクがクリップボードにコピーされました!
pax-jms-pool-transx
モジュールは、pax-transx-jms
バンドルに基づく org.ops4j.pax.jms.service.PooledConnectionFactoryFactory
サービスの実装を提供します。pax-transx-jms
バンドルは、org.ops4j.pax.transx.jms.ManagedConnectionFactoryBuilder
機能を使用して javax.jms.ConnectionFactory
プールを作成します。これは、「pax-transx プロジェクト」 で説明されている JCA(Java™ Connector Architecture) ソリューションです。