31.3. Red Hat AMQ に接続するように Artemis リソースアダプターを設定する
統合された Artemis リソースアダプターを Red Hat AMQ 7 のリモートインストールに接続するように設定できます。Red Hat AMQ 7 は、JBoss EAP 7.3 アプリケーションの JMS プロバイダーになります。これにより、JBoss EAP がリモート Red Hat AMQ 7 サーバーのクライアントになることができます。
AMQP や STOMP などの他のメッセージングプロトコルのサポートが必要な場合は、Red Hat AMQ 7 をメッセージングブローカーとして設定する必要があります。JBoss EAP サーバーに統合された Artemis リソースアダプターは、デプロイされたアプリケーションのメッセージを処理するために使用できます。
統合されたリソースアダプターの制限
キューとトピックの動的作成
JBoss EAP 7.3 に統合されている Artemis リソースアダプターは、Red Hat AMQ 7 ブローカーのキューとトピックの動的な作成をサポートしていないことに注意してください。すべてのキューとトピック宛先を、リモート Red Hat AMQ 7 サーバーに直接設定する必要があります。
接続ファクトリーの作成
Red Hat AMQ では、接続ファクトリーは pooled-connection-factory と external-context の両方を使用して設定できますが、各接続ファクトリーの作成方法には違いがあります。external-context を使用して接続ファクトリーを作成すると、JMS 仕様 に定義されている単純な JMS 接続ファクトリーが作成されます。新規作成された接続ファクトリーは RemoteConnectionFactory と同じで、これは messaging-activemq サブシステムにデフォルトで定義されています。この接続ファクトリーはアプリケーションサーバー内の他のコンポーネントから独立しているため、トランザクションマネージャーやセキュリティーマネージャーなどの他のコンポーネントを認識せず、使用することができません。このため、JBoss EAP 7 で接続ファクトリーを作成するには、pooled-connection-factory のみを使用できます。external-context は、ローカルデプロイメントが検索または挿入できるように、リモート AMQ 7 ブローカーですでに設定されている JMS 宛先を JBoss EAP 7 サーバーの JNDI ツリーに登録するためにのみ使用できます。
Artemis リソースアダプターを使用しないため、external-context または connection-factory 要素を設定して作成された接続ファクトリーを使用してリモート AMQ 7 ブローカーに接続することはできません。リモート AMQ 7 ブローカーに接続する場合は、pooled-connection-factory 要素を設定して作成される接続ファクトリーのみが、使用がサポートされます。
リモート Red Hat AMQ Server を使用するように JBoss EAP を設定する
管理 CLI を使用して、以下の手順に従って、メッセージングプロバイダーとして Red Hat AMQ 7 のリモートインストールを使用するように JBoss EAP を設定できます。
Red Hat AMQ 7 の
broker.xmlデプロイメント記述子ファイルにキューを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記JBoss EAP に含まれる Artemis リソースアダプターは、ActiveMQ Artemis JMS クライアント 2.x を使用します。このクライアントは、アドレスに
anycastPrefixとmulticastPrefixの接頭辞が必要です。また、キュー名がアドレス名と同じであることも必要です。リモートコネクターを作成します。
/subsystem=messaging-activemq/remote-connector=netty-remote-throughput:add(socket-binding=messaging-remote-throughput)
/subsystem=messaging-activemq/remote-connector=netty-remote-throughput:add(socket-binding=messaging-remote-throughput)Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、
messaging-activemqサブシステムに以下のremote-connectorが作成されます。<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> ... <remote-connector name="netty-remote-throughput" socket-binding="messaging-remote-throughput"/> ... </subsystem><subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> ... <remote-connector name="netty-remote-throughput" socket-binding="messaging-remote-throughput"/> ... </subsystem>Copy to Clipboard Copied! Toggle word wrap Toggle overflow リモート宛先アウトバウンドソケットバインディングを追加します。
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=messaging-remote-throughput:add(host=localhost, port=61616)
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=messaging-remote-throughput:add(host=localhost, port=61616)Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、
outbound-socket-binding要素設定に以下のremote-destinationが作成されます。<outbound-socket-binding name="messaging-remote-throughput"> <remote-destination host="localhost" port="61616"/> </outbound-socket-binding><outbound-socket-binding name="messaging-remote-throughput"> <remote-destination host="localhost" port="61616"/> </outbound-socket-binding>Copy to Clipboard Copied! Toggle word wrap Toggle overflow プールされた接続ファクトリーをリモートコネクターに追加します。
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(transaction=xa,entries=[java:/RemoteJmsXA, java:jboss/RemoteJmsXA],connectors=[netty-remote-throughput])
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(transaction=xa,entries=[java:/RemoteJmsXA, java:jboss/RemoteJmsXA],connectors=[netty-remote-throughput])Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、
messaging-activemqサブシステムに以下のpooled-connection-factoryが作成されます。<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> ... <pooled-connection-factory name="activemq-ra-remote" entries="java:/RemoteJmsXA java:jboss/RemoteJmsXA" connectors="netty-remote-throughput"/> ... </subsystem><subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> ... <pooled-connection-factory name="activemq-ra-remote" entries="java:/RemoteJmsXA java:jboss/RemoteJmsXA" connectors="netty-remote-throughput"/> ... </subsystem>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Artemis 1.x では、宛先名の接頭辞が必要でした (トピックの場合は jms.topic、キューの場合は jms.queue)。Artemis 2.x では接頭辞は必要ありませんが、Artemis 1.x との互換性のために、EAP は引き続き接頭辞を追加し、互換性モードで実行するように Artemis に指示します。リモート Artemis 2.x サーバーに接続する場合は、互換性モードではなく、接頭辞は不要になる可能性があります。接頭辞なしで宛先を使用する場合は、
enable-amq1-prefix属性を false に設定して、接頭辞を含まないように接続ファクトリーを設定できます。キューとトピックの
external-contextバインディングを作成します。/subsystem=naming/binding=java\:global\/remoteContext:add(binding-type=external-context, class=javax.naming.InitialContext, module=org.apache.activemq.artemis, environment=[java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory, java.naming.provider.url=tcp://127.0.0.1:61616, queue.MyQueue=MyQueue, queue.MyOtherQueue=MyOtherQueue, topic.MyTopic=MyTopic])
/subsystem=naming/binding=java\:global\/remoteContext:add(binding-type=external-context, class=javax.naming.InitialContext, module=org.apache.activemq.artemis, environment=[java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory, java.naming.provider.url=tcp://127.0.0.1:61616, queue.MyQueue=MyQueue, queue.MyOtherQueue=MyOtherQueue, topic.MyTopic=MyTopic])Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、
namingサブシステムに以下のexternal-contextバインディングが作成されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow JNDI 名を Red Hat AMQ 7 アドレス名の値に設定して、JMS キューおよびトピックのルックアップエントリーを作成します。これにより、JNDI 名と Red Hat AMQ 7 アドレス名の間のマッピングが作成されます。
/subsystem=naming/binding=java\:\/MyQueue:add(lookup=java:global/remoteContext/MyQueue,binding-type=lookup) /subsystem=naming/binding=java\:\/MyOtherQueue:add(lookup=java:global/remoteContext/MyOtherQueue,binding-type=lookup) /subsystem=naming/binding=java\:\/MyTopic:add(lookup=java:global/remoteContext/MyTopic,binding-type=lookup)
/subsystem=naming/binding=java\:\/MyQueue:add(lookup=java:global/remoteContext/MyQueue,binding-type=lookup) /subsystem=naming/binding=java\:\/MyOtherQueue:add(lookup=java:global/remoteContext/MyOtherQueue,binding-type=lookup) /subsystem=naming/binding=java\:\/MyTopic:add(lookup=java:global/remoteContext/MyTopic,binding-type=lookup)Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、
namingサブシステムに以下のlookup設定が作成されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、naming サブシステムを設定する代わりに、
/subsystem=messaging-activemq/external-jms-queueまたは/subsystem=messaging-activemq/external-jms-topicリソースを定義します。例を以下に示します。/subsystem=messaging-activemq/external-jms-queue=MyQueue:add(entries=[java:/MyQueue])
/subsystem=messaging-activemq/external-jms-queue=MyQueue:add(entries=[java:/MyQueue])Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、以下のリソースが作成されます。
<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> ... <external-jms-queue name="MyQueue" entries="java:/MyQueue"/> ... </subsystem><subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> ... <external-jms-queue name="MyQueue" entries="java:/MyQueue"/> ... </subsystem>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記external-jms-queueリソースは、キュー管理および統計の操作を提供しません。
これで、JBoss EAP が Red Hat AMQ 7 のリモートインストールをメッセージングプロバイダーとして使用するよう設定されました。