31.4. リモート Artemis ベースのブローカーの JMS リソース設定

管理 CLI から、@JMSConnectionFactoryDefinition アノテーションまたは @JMSDestinationDefinition アノテーションを使用して、Red Hat AMQ 7 などのリモート Artemis ベースのブローカーの JMS リソースを設定できます。管理コンソールからリソースを設定することもできます。

リモート ActiveMQ サーバーリソースは、Artemis のローカルインスタンスを必要としません。これにより、JBoss EAP イメージのメモリーと CPU フットプリントが削減されます。

31.4.1. JMSConnectionFactoryDefinition アノテーションを使用した JMS リソース設定

JBoss EAP は @JMSConnectionFactoryDefinition アノテーションを使用して接続ファクトリーを定義します。この接続ファクトリーは、ローカルまたはリモートの Artemis ブローカーに接続できます。@JMSConnectionFactoryDefinition アノテーションの resourceAdapter 要素は、リモート Artemis ブローカーに接続できる messaging-subsystem に定義される pooled-connection-factory の名前を参照します。resourceAdapter 要素は、接続ファクトリーの作成に使用されるリソースアダプター、または接続ファクトリーが定義されるリソースアダプターを定義します。

resourceAdapter 要素が @JMSConnectionFactoryDefinition アノテーションに定義されていない場合、messaging-activemq サブシステムはデフォルトで接続ファクトリーの JNDI 名を使用します。これは、デフォルトのバインディングとして知られています。デフォルトのバインディングは、/subsystem=ee/service=default-bindingsjms-connection-factory 属性を使用して定義されます。resourceAdapter 要素が指定されているか、または jms-connection-factory のデフォルトのバインディングから定義できる場合、およびリモートブローカーへの pooled-connection-factory である場合、リモートブローカーへの接続に使用できます。

resourceAdaptermessaging-activemq サブシステムに定義されていない場合、または jms-connection-factory のデフォルトのバインディングから取得できない場合、JMS リソースの作成タスクは、リソースアダプターの admin-objects および connection-definitions リソースに基づいて resource-adapters サブシステムに委任されます。

以下のセクションでは、@JMSConnectionFactoryDefinition アノテーションを設定して使用する方法の例を紹介します。

デフォルトのリソースアダプターを使用した @JMSConnectionFactoryDefinition の設定
  1. コネクターを作成します。

    /subsystem=messaging/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")
  2. プールされた接続ファクトリーを作成します。

    /subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"]
  3. ee サブシステムのデフォルトの JMS 接続ファクトリーを定義します。

    /subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")
  4. アプリケーションコードで @JMSConnectionFactoryDefinition アノテーションを使用します。

    @JMSConnectionFactoryDefinition(
            name="java:app/myCF"
リモート Artemis ブローカーを使用した @JMSConnectionFactoryDefinition の設定
  1. コネクターを作成します。

    /subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")
  2. プールされた接続ファクトリーを作成します。

    /subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"])
  3. ee サブシステムのデフォルトの JMS 接続ファクトリーを定義します。

    /subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")
  4. アプリケーションコードで @JMSConnectionFactoryDefinition アノテーションを使用します。

    @JMSConnectionFactoryDefinition(
            name="java:app/myCF"
            resourceAdapter="myPCF"
    )
サードパーティー JMS リソースアダプターを使用した @JMSConnectionFactoryDefinition の設定
  1. コネクターを作成します。

    /subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")
  2. プールされた接続ファクトリーを作成します。

    /subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"])
  3. ee サブシステムのデフォルトの JMS 接続ファクトリーを定義します。

    /subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")
  4. アプリケーションコードで @JMSConnectionFactoryDefinition アノテーションを使用します。

    @JMSConnectionFactoryDefinition(
            name="java:app/myCF"
            resourceAdapter="wsmq"
    )