3.2. メッセージングサブシステム設定の概要
messaging-activemq
サブシステムのデフォルト設定は、JBoss EAP サーバーを full
または full-ha
設定で開始するときに含まれます。full-ha
オプションには、クラスターリング や 高可用性 などの機能の高度な設定が含まれます。
必須ではありませんが、helloworld-mdb
クイックスタートを作業例として使用 して、この設定の概要と一緒に実行することが推奨されます。
messaging-activemq
サブシステムで使用できるすべての設定については、EAP_HOME/docs/schema/
ディレクトリーにあるスキーマ定義を参照するか、以下のように、管理 CLI からサブシステムで read-resource-description
操作を実行します。
/subsystem=messaging-activemq:read-resource-description(recursive=true)
サーバー設定ファイルの以下のエクステンションは、JBoss EAP に対して、そのランタイムの一部として messaging-activemq
サブシステムを含めるように指示するものです。
<extensions> ... <extension module="org.wildfly.extension.messaging-activemq"/> ... </extensions>
messaging-activemq
サブシステムの設定は <subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
要素内に含まれます。
<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> <server name="default"> <cluster password="${jboss.messaging.cluster.password:CHANGE ME!!}"/> <security-setting name="#"> <role name="guest" send="true" consume="true" create-non-durable-queue="true" delete-non-durable-queue="true"/> </security-setting> <address-setting name="#" dead-letter-address="jms.queue.DLQ" expiry-address="jms.queue.ExpiryQueue" max-size-bytes="10485760" page-size-bytes="2097152" message-counter-history-day-limit="10" redistribution-delay="1000"/> <http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/> <http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput"> <param name="batch-delay" value="50"/> </http-connector> <in-vm-connector name="in-vm" server-id="0"/> <http-acceptor name="http-acceptor" http-listener="default"/> <http-acceptor name="http-acceptor-throughput" http-listener="default"> <param name="batch-delay" value="50"/> <param name="direct-deliver" value="false"/> </http-acceptor> <in-vm-acceptor name="in-vm" server-id="0"/> <broadcast-group name="bg-group1" connectors="http-connector" jgroups-cluster="activemq-cluster"/> <discovery-group name="dg-group1" jgroups-cluster="activemq-cluster"/> <cluster-connection name="my-cluster" address="jms" connector-name="http-connector" discovery-group="dg-group1"/> <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/> <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/> <connection-factory name="InVmConnectionFactory" connectors="in-vm" entries="java:/ConnectionFactory"/> <connection-factory name="RemoteConnectionFactory" ha="true" block-on-acknowledge="true" reconnect-attempts="-1" connectors="http-connector" entries="java:jboss/exported/jms/RemoteConnectionFactory"/> <pooled-connection-factory name="activemq-ra" transaction="xa" connectors="in-vm" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory"/> </server> </subsystem>
接続ファクトリー
メッセージングクライアントは JMS ConnectionFactory
オブジェクトを使用してサーバーに接続します。デフォルトの JBoss EAP 設定は複数の接続ファクトリーを定義します。in-vm、http、および pooled 接続の <connection-factory>
があることに留意します。
<connection-factory name="InVmConnectionFactory" connectors="in-vm" entries="java:/ConnectionFactory"/> <connection-factory name="RemoteConnectionFactory" ha="true" block-on-acknowledge="true" reconnect-attempts="-1" connectors="http-connector" entries="java:jboss/exported/jms/RemoteConnectionFactory"/> <pooled-connection-factory name="activemq-ra" transaction="xa" connectors="in-vm" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory"/>
詳細は、接続ファクトリーの設定 のセクションを参照してください。
コネクターとアクセプター
各 JMS 接続ファクトリーはコネクターを使用して、クライアントプロデューサーまたはコンシューマーからメッセージングサーバーへの JMS 対応通信を有効にします。コネクターオブジェクトは、メッセージングサーバーに接続するために使用されるトランスポートとパラメーターを定義します。それに対応するのが、メッセージングサーバーが受け入れる接続タイプを識別するアクセプターオブジェクトです。
デフォルトの JBoss EAP 設定は複数のコネクターとアクセプターを定義します。
例: デフォルトのコネクター
<http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/> <http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput"> <param name="batch-delay" value="50"/> </http-connector> <in-vm-connector name="in-vm" server-id="0"/>
例: デフォルトのアクセプター
<http-acceptor name="http-acceptor" http-listener="default"/> <http-acceptor name="http-acceptor-throughput" http-listener="default"> <param name="batch-delay" value="50"/> <param name="direct-deliver" value="false"/> </http-acceptor>
詳細については、アクセプターとコネクター のセクションを参照してください。
ソケットバインディンググループ
デフォルトのコネクターの socket-binding
属性は、http
という名前のソケットバインディングを参照します。JBoss EAP は標準の Web ポートで受信リクエストを多重化できるため、http コネクターが使用されます。
この socket-binding
は、設定ファイルの他の場所の <socket-binding-group>
セクションの一部として見つけることができます。http および https ソケットバインディングの設定が、<socket-binding-groups>
要素内でどのように表示されているかに注目してください。
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> ... <socket-binding name="http" port="${jboss.http.port:8080}"/> <socket-binding name="https" port="${jboss.https.port:8443}"/> ... </socket-binding-group>
ソケットバインディングに関する詳細は、JBoss EAP設定ガイドの ソケットバインディングの設定 を参照してください。
メッセージングセキュリティー
messaging-activemq
サブシステムには、JBoss EAP の初回インストール時に単一の security-setting
要素が含まれます。
<security-setting name="#"> <role name="guest" delete-non-durable-queue="true" create-non-durable-queue="true" consume="true" send="true"/> </security-setting>
これは、ワイルドカード #
で示され、ロール guest
が指定されたすべてのユーザーが、サーバー上の任意のアドレスにアクセスできることを宣言します。ワイルドカード構文の詳細は、アドレス設定の設定 を参照してください。
接続先およびリモート接続のセキュリティー保護の詳細は、メッセージングセキュリティーの設定 を参照してください。
メッセージング宛先
full
および full-ha
設定には、JBoss EAP が期限切れのメッセージまたは適切な宛先にルーティングできないメッセージを保持するのに使用できる 2 つの有用なキューが含まれます。
<jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/> <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
以下のメソッドのいずれかを使用して、JBoss EAP に独自のメッセージング宛先を追加できます。
管理 CLI の使用
以下の管理 CLI コマンドを使用して、キューを追加します。
jms-queue add --queue-address=testQueue --entries=queue/test,java:jboss/exported/jms/queue/test
以下の管理 CLI コマンドを使用して、トピックを追加します。
jms-topic add --topic-address=testTopic --entries=topic/test,java:jboss/exported/jms/topic/test
管理コンソールの使用
メッセージング宛先は管理コンソールから設定できます。設定 → サブシステム → Messaging (ActiveMQ) → サーバーの順に移動し、サーバーを選択して宛先を選択し、表示をクリックします。JMS キュータブを選択し てキューを設定し、JMS トピックを選択してトピック を設定します。
Java EE デプロイメント記述子またはアノテーションを使用した宛先の定義。
Jakarta EE 8 では、デプロイメント記述子にキューとトピックの設定を含めることができます。以下は、JMS キューを定義する Java EE 記述子ファイルのスニペットです。
... <jms-destination> <name>java:global/jms/MyQueue</name> <interfaceName>javax.jms.Queue</interfaceName> <destinationName>myQueue</destinationName> </jms-destination> ...
たとえば、
helloworld-mdb
クイックスタートのメッセージ駆動 Bean には、アプリケーションの実行に必要なキューとトピックを定義するアノテーションが含まれます。この方法で作成された宛先は、ランタイムキューのリストに表示されます。管理 CLI を使用してランタイムキューのリストを表示します。クイックスタートをデプロイすると、作成されたランタイムキューは以下のように表示されます。/subsystem=messaging-activemq/server=default/runtime-queue=*:read-resource { "outcome" => "success", "result" => [ ... { "address" => [ ("subsystem" => "messaging-activemq"), ("server" => "default"), ("runtime-queue" => "jms.queue.HelloWorldMDBQueue") ], "outcome" => "success", "result" => {"durable" => undefined} }, ... { "address" => [ ("subsystem" => "messaging-activemq"), ("server" => "default"), ("runtime-queue" => "jms.topic.HelloWorldMDBTopic") ], "outcome" => "success", "result" => {"durable" => undefined} }, ... ] }
詳細は、メッセージング宛先の設定 を参照してください。