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-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"
リモート 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"
    )

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

サーバーリソースを使用して、ローカルブローカーへの pooled-connection-factory に必要な宛先を作成できます。

resourceAdapter 要素が pooled-connection-factory 名を指し、ローカルブローカー (例: /subsystem/messaging-activemq/server=default) に定義されている場合、ローカル Artemis ブローカーに宛先を作成します。

注記

リモート Artemis ベースのブローカーに宛先を作成する必要がある場合は、pooled-connection-factorymessaging-activemq サブシステムに定義する必要があります。

@JMSDestinationDefinition アノテーションに設定された resourceAdapter が、messaging-activemq サブシステムの server に定義された resourceAdapter 要素と一致する場合、pooled-connection-factory のコネクターがローカル Artemis ブローカーを指すか、リモート Artemis ブローカーを指すかに関係なく、このブローカーに宛先が作成されます。

JMSDestinationDefinition アノテーションを使用した JMS リソースの設定
  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. アプリケーションコードに @JMSDestinationDefinition アノテーションを使用します。

    @JMSDestinationDefinition(
        name = "java:/jms/queue/MessageBeanQueue",
        interfaceName = "javax.jms.Queue",
        destinationName = "MessageBeanQueue"
        properties= {
            "management-address=remote-activemq.management"
        }
    )

31.4.3. 管理コンソールを使用したリモート ActiveMQ サーバーリソースの設定

管理コンソールから以下のリモート ActiveMQ サーバーリソースを設定できます。

  • 汎用コネクター
  • VM コネクターで
  • HTTP コネクター
  • リモートコネクター
  • 検出グループ
  • 接続ファクトリー
  • プールされた接続ファクトリー
  • 外部 JMS キュー
  • 外部 JMS トピック

管理コンソールからのリモート ActiveMQ サーバーリソースを設定するには、以下を行います。

  1. 管理コンソールにアクセスし、設定サブシステムMessaging (ActiveMQ)リモート ActiveMQ Server を選択し、表示をクリックします。
  2. ナビゲーションペインで、設定するリソースをクリックします。