20.11.2. JMS ブリッジの作成
JMS ブリッジはソースの JMS キューまたはトピックからメッセージを消費し、通常は異なるサーバーにあるターゲット JMS キューまたはトピックへ送信します。JMS 1.1 に準拠する JMS サーバーの間でメッセージをブリッジするために使用できます。送信元および宛先の JMS リソースは、JNDI を使用してルックアップされ、JNDI ルックアップのクライアントクラスはモジュールでバンドルされる必要があります。モジュール名は JMS ブリッジ設定で宣言されます。
手順20.2 JMS ブリッジの作成
ソース JMS メッセージングサーバーでのブリッジの設定
サーバータイプに見合った手順を使用して、JMS ブリッジをソースサーバーに設定します。JBoss EAP 5.x サーバーに JMS ブリッジを設定する方法の例は、JBoss EAP 6『移行ガイド』のトピック「JMS ブリッジの作成」を参照してください。宛先 JBoss EAP 6 サーバー上のブリッジの設定
JBoss EAP 6.1 およびそれ以降のバージョンでは、JMS ブリッジを使用して JMS 1.1 に準拠するサーバーからメッセージをブリッジできます。ソースおよびターゲットの JMS リソースは JNDI を使用してルックアップされるため、ソースメッセージングプロバイダーの JNDI ルックアップクラスまたはメッセージブローカーは JBoss モジュールでバンドルされる必要があります。次の手順では、例として架空の「MyCustomMQ」メッセージブローカーが使用されています。- メッセージプロバイダーの JBoss モジュールを作成します。
- 新しいモジュール向けに
EAP_HOME/modules/system/layers/base/
下にディレクトリー構造を作成します。main/
サブディレクトリーには、クライアント JAR とmodule.xml
ファイルを格納します。EAP_HOME/modules/system/layers/base/org/mycustommq/main/
は MyCustomMQ メッセージングプロバイダー用に作成されたディレクトリー構造の例になります。 main/
サブディレクトリー内に、メッセージングプロバイダーのモジュール定義が含まれるmodule.xml
ファイルを作成します。MyCustomMQ メッセージプロバイダー用に作成されたmodule.xml
の例は次のとおりです。<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="org.mycustommq"> <properties> <property name="jboss.api" value="private"/> </properties> <resources> <!-- Insert resources required to connect to the source or target --> <resource-root path="mycustommq-1.2.3.jar" /> <resource-root path="mylogapi-0.0.1.jar" /> </resources> <dependencies> <!-- Add the dependencies required by JMS Bridge code --> <module name="javax.api" /> <module name="javax.jms.api" /> <module name="javax.transaction.api"/> <!-- Add a dependency on the org.hornetq module since we send --> <!-- messages tothe HornetQ server embedded in the local EAP instance --> <module name="org.hornetq" /> </dependencies> </module>
- ソースリソースの JNDI ルックアップに必要なメッセージングプロバイダー JAR をモジュールの
main/
サブディレクトリーへコピーします。MyCustomMQ モジュールのディレクトリー構造は次のようになるはずです。modules/ `-- system `-- layers `-- base `-- org `-- mycustommq `-- main |-- mycustommq-1.2.3.jar |-- mylogapi-0.0.1.jar |-- module.xml
- JBoss EAP 6 サーバーの
messaging
サブシステムに JMS ブリッジを設定します。- 設定を行う前に、サーバーを停止し、現在のサーバー設定ファイルをバックアップしてください。スタンドアロンサーバーを実行している場合は、
EAP_HOME/standalone/configuration/standalone-full-ha.xml
ファイルをバックアップします。管理対象ドメインを実行している場合は、EAP_HOME/domain/configuration/domain.xml
ファイルおよびEAP_HOME/domain/configuration/host.xml
ファイルを両方バックアップします。 jms-bridge
要素を、サーバー設定ファイルのmessaging
サブシステムへ追加します。source
およびtarget
要素は、JNDI ルックアップに使用される JMS リソースの名前を提供します。user
およびpassword
クレデンシャルが指定されいると、JMS 接続の作成時に引数として渡されます。MyCustomMQ メッセージングプロバイダー用に設定されたjms-bridge
要素の例は次のとおりです。<subsystem xmlns="urn:jboss:domain:messaging:1.3"> ... <jms-bridge name="myBridge" module="org.mycustommq"> <source> <connection-factory name="ConnectionFactory"/> <destination name="sourceQ"/> <user>user1</user> <password>pwd1</password> <context> <property key="java.naming.factory.initial" value="org.mycustommq.jndi.MyCustomMQInitialContextFactory"/> <property key="java.naming.provider.url" value="tcp://127.0.0.1:9292"/> </context> </source> <target> <connection-factory name="java:/ConnectionFactory"/> <destination name="/jms/targetQ"/> </target> <quality-of-service>DUPLICATES_OK</quality-of-service> <failure-retry-interval>500</failure-retry-interval> <max-retries>1</max-retries> <max-batch-size>500</max-batch-size> <max-batch-time>500</max-batch-time> <add-messageID-in-header>true</add-messageID-in-header> </jms-bridge> </subsystem>
上記の例では、JNDI プロパティーはsource
のcontext
要素に定義されています。上記のtarget
の例のように、context
要素が省略されると、JMS リソースはローカルインスタンスでルックアップされます。