20.8. 設定

20.8.1. JMS サーバーの設定

HornetQ 向けに JMS サーバーを設定するには、サーバー設定ファイルを編集します。サーバー設定は、ドメインサーバーの EAP_HOME/domain/configuration/domain.xml ファイル、またはスタンドアロンの EAP_HOME/standalone/configuration/standalone-full.xml ファイルに含まれています。
サーバー設定ファイルの <subsystem xmlns="urn:jboss:domain:messaging:1.4"> 要素には、すべての JMS 設定が含まれています。JNDI に必要な JMS の ConnectionFactoryQueue、または Topic インスタンスを追加します。
  1. JBoss EAP 6 で JMS サブシステムを有効にします。

    <extensions> 要素内に以下の行が存在し、コメントアウトされていないことを確認します。
    <extension module="org.jboss.as.messaging"/>
  2. 基本の JMS サブシステムを追加します。

    メッセージングサブシステムが設定ファイルに存在しない場合は、追加します。
    1. 使用するプロファイルに該当する <profile> を探し、<subsystems> タグを見つけます。
    2. <profile> タグのすぐ後に以下の XML を追加します。
      <subsystem xmlns="urn:jboss:domain:messaging:1.4">
          <hornetq-server>
          <!-- ALL XML CONFIGURATION IS ADDED HERE -->
          </hornetq-server>
      </subsystem>
      その他の設定はすべて、その上の空いている行に追加します。
  3. JMS の基本設定を追加します。

    <subsystem xmlns="urn:jboss:domain:messaging:1.4"><hornetq-server> タグの後の空行に以下の XML を追加します。
    <journal-min-files>2</journal-min-files>
    <journal-type>NIO</journal-type>
    <persistence-enabled>true</persistence-enabled>
    ニーズに合わせて上記の値を変更します。

    警告

    journal-file-size の値が min-large-message-size の値 (デフォルトでは 100KiB) 以上でないと、サーバーはメッセージを保存できません。
  4. HornetQ に接続ファクトリーインスタンスを追加します。

    クライアントは、JMS ConnectionFactory オブジェクトを使い、サーバーへの接続を確立します。JMS 接続ファクトリーオブジェクトを HornetQ に追加するには、次のように接続ファクトリごとに、単一の <jms-connection-factories> タグと <connection-factory> 要素が含まれるようにします。
      <jms-connection-factories>
        <connection-factory name="InVmConnectionFactory">
            <connectors>
                <connector-ref connector-name="in-vm"/>
            </connectors>
            <entries>
                <entry name="java:/ConnectionFactory"/>
            </entries>
        </connection-factory>
        <connection-factory name="RemoteConnectionFactory">
            <connectors>
                <connector-ref connector-name="netty"/>
            </connectors>
            <entries>
                <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
            </entries>
        </connection-factory>
        <pooled-connection-factory name="hornetq-ra">
            <transaction mode="xa"/>
            <connectors>
                <connector-ref connector-name="in-vm"/>
            </connectors>
            <entries>
                <entry name="java:/JmsXA"/>
            </entries>
        </pooled-connection-factory>
    </jms-connection-factories>
  5. netty コネクターおよびアクセプターを設定します。

    この JMS 接続ファクトリーは netty アクセプターおよびコネクターを使用します。これらは、サーバー設定ファイルにデプロイされたコネクターおよびアクセプターオブジェクトへの参照です。コネクターオブジェクトは、HornetQ サーバーへ接続するために使用されるトランスポートとパラメーターを定義します。アクセプターオブジェクトは HornetQ サーバーによって許可される接続のタイプを識別します。
    netty コネクターを設定するには、以下の設定が含まれるようにします。
    <connectors>
        <netty-connector name="netty" socket-binding="messaging"/>
        <netty-connector name="netty-throughput" socket-binding="messaging-throughput">
            <param key="batch-delay" value="50"/>
        </netty-connector>
        <in-vm-connector name="in-vm" server-id="0"/>
    </connectors>
    netty アクセプターを設定するには、以下の設定が含まれるようにします。
    <acceptors>
        <netty-acceptor name="netty" socket-binding="messaging"/>
        <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
            <param key="batch-delay" value="50"/>
            <param key="direct-deliver" value="false"/>
        </netty-acceptor>
        <in-vm-acceptor name="in-vm" server-id="0"/>
    </acceptors>
  6. 設定を確認します。

    これまでの手順に従った場合、メッセージサブシステムは以下のようになるはずです。
    <subsystem xmlns="urn:jboss:domain:messaging:1.4">
        <hornetq-server>
            <journal-min-files>2</journal-min-files>
            <journal-type>NIO</journal-type>
            <persistence-enabled>true</persistence-enabled>
            <jms-connection-factories>
                <connection-factory name="InVmConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="in-vm"/>
                    </connectors>
                    <entries>
                        <entry name="java:/ConnectionFactory"/>
                    </entries>
                </connection-factory>
                <connection-factory name="RemoteConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="netty"/>
                    </connectors>
                    <entries>
                        <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
                    </entries>
                </connection-factory>
                <pooled-connection-factory name="hornetq-ra">
                    <transaction mode="xa"/>
                    <connectors>
                        <connector-ref connector-name="in-vm"/>
                    </connectors>
                    <entries>
                        <entry name="java:/JmsXA"/>
                    </entries>
                </pooled-connection-factory>
            </jms-connection-factories>
            <connectors>
                <netty-connector name="netty" socket-binding="messaging"/>
                <netty-connector name="netty-throughput" socket-binding="messaging-throughput">
                    <param key="batch-delay" value="50"/>
                </netty-connector>
                <in-vm-connector name="in-vm" server-id="0"/>
            </connectors>	
            <acceptors>
                <netty-acceptor name="netty" socket-binding="messaging"/>
                <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
                    <param key="batch-delay" value="50"/>
                    <param key="direct-deliver" value="false"/>
                </netty-acceptor>
                <in-vm-acceptor name="in-vm" server-id="0"/>
            </acceptors>
        </hornetq-server>
    </subsystem>
  7. ソケットバインディンググループを設定します。

    Netty コネクターは、messaging および messaging-throughput ソケットバインディングを参照します。messaging ソケットバインディングは、ポート 5445 を使用し、messaging-throughput ソケットバインディングはポート 5455 を使用します。<socket-binding-group> タグはサーバー設定ファイルの別のセクションにあります。以下のソケットバインディングが <socket-binding-groups> 要素に存在するようにしてください。
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        ...
        <socket-binding name="messaging" port="5445"/>
        <socket-binding name="messaging-throughput" port="5455"/>
        ...
      </socket-binding-group>
  8. キューインスタンスを HornetQ への追加します。

    HornetQ 向けにキューインスタンス (または JMS 宛先) を設定する方法は 4 つあります。
    • 管理コンソールの使用
      管理コンソールを使用するには、サーバーを Message-Enabled モードで起動する必要があります。これには、-c オプションを使用し、standalone-full.xml (スタンドアロンサーバー向け) 設定ファイルの使用を強制します。たとえば、スタンドアロンモードでは以下を使用するとサーバーをメッセージ有効モードで起動できます。
      ./standalone.sh -c standalone-full.xml
      サーバーが起動したら、管理コンソールにログインし、Configuration タブを選択します。Subsystems メニューを展開した後、Messaging メニューを展開し、Destinations をクリックします。JMS Messaging Provider テーブルの Default の横にある View をクリックし、Add をクリックして JMS 宛先の詳細を入力します。
    • 管理 CLI の使用:
      最初に、管理 CLI へ接続します。
       bin/jboss-cli.sh --connect
      次に、メッセージングサブシステムに移動します。
      cd /subsystem=messaging/hornetq-server=default
      最後に、add 操作を実行します。以下の例の値は独自の値に置き換えてください。
      ./jms-queue=testQueue:add(durable=false,entries=["java:jboss/exported/jms/queue/test"])
    • JMS 設定ファイルの作成および deployments フォルダーへの追加
      最初に、JMS 設定ファイル example-jms.xml を作成します。以下のエントリーを追加し、値は独自の値に置き換えます。
      <?xml version="1.0" encoding="UTF-8"?>				  	  <messaging-deployment xmlns="urn:jboss:messaging-deployment:1.0">
          <hornetq-server>
              <jms-destinations>
                  <jms-queue name="testQueue">
                      <entry name="queue/test"/>
                      <entry name="java:jboss/exported/jms/queue/test"/>
                  </jms-queue>
                  <jms-topic name="testTopic">
                      <entry name="topic/test"/>
                      <entry name="java:jboss/exported/jms/topic/test"/>
                  </jms-topic>
              </jms-destinations>
          </hornetq-server>
      </messaging-deployment>
      このファイルを deployments フォルダーに保存し、デプロイメントを実行します。
    • JBoss EAP 6 の設定ファイルにエントリーを追加します。
      standalone-full.xml を例として使用し、このファイルでメッセージングサブシステムを見つけます。
      <subsystem xmlns="urn:jboss:domain:messaging:1.4">
      再度、以下のエントリーを追加し、例の値は独自の値に置き換えます。これらのエントリーは </jms-connection-factories> 終了タグと </hornetq-server> 要素の間に追加する必要があります。
      <jms-destinations>
              <jms-queue name="testQueue">
                  <entry name="queue/test"/>
                  <entry name="java:jboss/exported/jms/queue/test"/>
              </jms-queue>
              <jms-topic name="testTopic">
                  <entry name="topic/test"/>
                  <entry name="java:jboss/exported/jms/topic/test"/>
              </jms-topic>
      </jms-destinations>
  9. 追加の設定を実行します。

    追加の設定が必要な場合は EAP_HOME/docs/schema/jboss-as-messaging_1_4.xsd DTD を確認します。