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.ConnectionFactoryFactoryservices -
org.ops4j.connectionfactoryfactory 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) ソリューションです。