Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

18.13.2. JMS ブリッジの作成

概要

JMS ブリッジはソースの JMS キューまたはトピックからメッセージを消費し、通常は異なるサーバーにあるターゲット JMS キューまたはトピックへ送信します。JMS 1.1 に準拠する JMS サーバーの間でメッセージをブリッジするために使用できます。送信元および宛先の JMS リソースは、JNDI を使用してルックアップされ、JNDI ルックアップのクライアントクラスはモジュールでバンドルされる必要があります。モジュール名は JMS ブリッジ設定で宣言されます。

手順18.2 JMS ブリッジの作成

この手順では、JMS ブリッジを設定して、メッセージを JBoss EAP 5.x サーバーから JBoss EAP 6 サーバーへ移行する方法を示します。
  1. ソース JMS メッセージングサーバーでのブリッジの設定
    サーバータイプに記載されている手順に従って、ソースサーバーに JMS ブリッジを設定します。JBoss EAP 5.x サーバーに JMS ブリッジを設定する方法の例は、JBoss EAP 6 『『移行ガイド』』 『の「JMS ブリッジの作成』 」を参照してください。
  2. 宛先 JBoss EAP 6 サーバー上のブリッジの設定
    JBoss EAP 6.1 以降では、JMS ブリッジを使用して JMS 1.1 準拠のサーバーからメッセージをブリッジできます。ソースおよびターゲットの JMS リソースは JNDI を使用してルックアップされるため、ソースメッセージングプロバイダーの JNDI ルックアップクラスまたはメッセージブローカーは JBoss モジュールにバンドルされる必要があります。以下の手順では、例として特別な 'MyCustomMQ' メッセージブローカーを使用しています。
    1. メッセージプロバイダーの JBoss モジュールを作成します。
      1. 新しいモジュールの EAP_HOME/modules/system/layers/base/ の下にディレクトリー構造を作成します。main/ サブディレクトリーには、クライアント JAR および module.xml ファイルが含まれます。MyCustomMQ メッセージングプロバイダー用に作成されたディレクトリー構造の例 EAP_HOME/modules/system/layers/base/org/mycustommq/main/
      2. 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>
        
      3. ソースリソースの JNDI ルックアップに必要なメッセージングプロバイダー JAR をモジュールの main/ サブディレクトリーにコピーします。MyCustomMQ モジュールのディレクトリー構造は以下のようになります。
        modules/
        `-- system
            `-- layers
                `-- base
                    `-- org
                          `-- mycustommq
                              `-- main
                                  |-- mycustommq-1.2.3.jar
                                  |-- mylogapi-0.0.1.jar
                                  |-- module.xml
        
    2. JBoss EAP 6 サーバーの messaging サブシステムで JMS ブリッジを設定します。
      1. 開始する前に、サーバーを停止し、現在のサーバー設定ファイルをバックアップします。スタンドアロンサーバーを実行している場合は、EAP_HOME/standalone/configuration/standalone-full-ha.xml ファイルになります。管理対象ドメインを実行している場合は、EAP_HOME/domain/configuration/domain.xml ファイルと EAP_HOME/domain/configuration/host.xml ファイルの両方をバックアップします。
      2. jms-bridge 要素をサーバー設定ファイルの messaging サブシステムに追加します。source 要素および target 要素は、JNDI ルックアップに使用される JMS リソースの名前を提供します。ユーザーパスワード の認証情報が指定されている場合は、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 プロパティーは ソースコンテキスト 要素で定義されます。上記の例のように、context 要素を省略すると、JMS リソースはローカルインスタンスでルックアップされます。