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-bindings
の jms-connection-factory
属性を使用して定義されます。resourceAdapter
要素が指定されているか、jms-connection-factory
のデフォルトのバインディングから定義できる場合、およびリモートブローカーへの pooled-connection-factory
である場合、リモートブローカーへの接続に使用できます。
resourceAdapter
が messaging-activemq
サブシステムに定義されていない場合、または jms-connection-factory
のデフォルトのバインディングから取得できない場合、JMS リソースの作成タスクは、リソースアダプターの admin-objects
および connection-definitions
リソースに基づいて resource-adapters
サブシステムに委任されます。
以下のセクションでは、@JMSConnectionFactoryDefinition
アノテーションを設定して使用する方法の例を紹介します。
デフォルトのリソースアダプターを使用した @JMSConnectionFactoryDefinition の設定
コネクターを作成します。
/subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")
プールされた接続ファクトリーを作成します。
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"]
ee
サブシステムのデフォルトの JMS 接続ファクトリーを定義します。/subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")
アプリケーションコードで
@JMSConnectionFactoryDefinition
アノテーションを使用します。@JMSConnectionFactoryDefinition( name="java:app/myCF"
リモート Artemis ブローカーを使用した @JMSConnectionFactoryDefinition の設定
コネクターを作成します。
/subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")
プールされた接続ファクトリーを作成します。
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"])
ee
サブシステムのデフォルトの JMS 接続ファクトリーを定義します。/subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")
アプリケーションコードで
@JMSConnectionFactoryDefinition
アノテーションを使用します。@JMSConnectionFactoryDefinition( name="java:app/myCF" resourceAdapter="myPCF" )
サードパーティー JMS リソースアダプターを使用した @JMSConnectionFactoryDefinition の設定
コネクターを作成します。
/subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")
プールされた接続ファクトリーを作成します。
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"])
ee
サブシステムのデフォルトの JMS 接続ファクトリーを定義します。/subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")
アプリケーションコードで
@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-factory
を messaging-activemq
サブシステムに定義する必要があります。
@JMSDestinationDefinition
アノテーションに設定された resourceAdapter
が、messaging-activemq
サブシステムの server
に定義された resourceAdapter
要素と一致する場合、pooled-connection-factory
のコネクターがローカル Artemis ブローカーを指すか、リモート Artemis ブローカーを指すかに関係なく、このブローカーに宛先が作成されます。
JMSDestinationDefinition アノテーションを使用した JMS リソースの設定
コネクターを作成します。
/subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")
プールされた接続ファクトリーを作成します。
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"])
ee
サブシステムのデフォルトの JMS 接続ファクトリーを定義します。/subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")
アプリケーションコードに
@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 サーバーリソースを設定するには、以下を行います。
- 管理コンソールにアクセスし、設定 → サブシステム → Messaging (ActiveMQ) → リモート ActiveMQ Server を選択し、表示をクリックします。
- ナビゲーションペインで、設定するリソースをクリックします。