20.11.2. JMS ブリッジの作成
概要
JMS ブリッジはソースの JMS キューまたはトピックからメッセージを消費し、通常は異なるサーバーにあるターゲット JMS キューまたはトピックへ送信します。JMS 1.1 に準拠する JMS サーバーの間でメッセージをブリッジするために使用できます。送信元および宛先の JMS リソースは、JNDI を使用してルックアップされ、JNDI ルックアップのクライアントクラスはモジュールでバンドルされる必要があります。モジュール名は JMS ブリッジ設定で宣言されます。
手順20.2 JMS ブリッジの作成
この手順では、JMS ブリッジを設定して、メッセージを JBoss EAP 5.x サーバーから JBoss EAP 6 サーバーへ移行する方法を示します。
ソース 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 リソースはローカルインスタンスでルックアップされます。