6.2. camel-jms
camel-jms、camel-sjms、および camel-sjms2 エンドポイントをリモート AMQ 7 ブローカーに接続するサポート対象の方法は 2 つあります。
- JBoss EAP メッセージング設定ガイドの Red Hat JBoss AMQ 7 に接続するための Artemis リソースアダプターの設定 のセクションで説明されているように、プールされた接続ファクトリーを使用してリモートコネクターを設定します。
- connection-factory を使用した remote-connector の設定で説明されているように、connection-factory を使用して remote-connector を設定する。
接続プールと XA トランザクションのサポートを提供するため、最初のオプションが推奨される方法です。
永続サブスクライバーを使用するメッセージングのシナリオでは、JavaEE 7 仕様による制約があるため、pooled-connection-factory は Fuse 7.13 on JBoss EAP ではサポートされません。このようなシナリオでは、標準のプール化されていない connection-factory を設定することが推奨されます。
connection-factory を使用した remote-connector の設定
リモートメッセージングサーバーを指す outbound-socket-binding を作成します。
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=messaging-remote-throughput:add(host=localhost, port=61616)
ステップ 1 で作成した outbound-socket-binding を参照する remote-connector を作成します。
/subsystem=messaging-activemq/server=default/remote-connector=netty-remote-throughput:add(socket-binding=messaging-remote-throughput)
ステップ 2 で作成した remote-connector を参照する connection-factory を作成します。
/subsystem=messaging-activemq/server=default/connection-factory=simple-remote-artemis-connection-factory:add(entries=[java:/jms/RemoteJms],connectors=[netty-remote-throughput])
6.2.1. メッセージングブローカーおよびクライアント
概要
Fuse 7.13 にはデフォルトの内部メッセージングブローカーが含まれていませんが、外部 JMS ブローカーとインターフェイスするように設計されています。
Fuse 7.13 on JBoss EAP は、JBoss EAP でのメッセージングの設定 で説明されているリソースアダプターを使用して、外部メッセージングブローカーにアクセスします。
Fuse 7.13 on JBoss EAP のメッセージングで使用できる外部ブローカー、JCA アダプター、および Camel コンポーネントの組み合わせに関する詳細は、Red Hat Fuse でサポートされる構成 を参照してください。
JMS を使用して Fuse on JBoss EAP を使用して外部ブローカーに接続する方法は、「camel-jms」を参照してください。
camel-jms クイックスタート
クイックスタートは、Fuse on JBoss EAP で camel-jms コンポーネントを使用して JMS メッセージを生成および消費する方法を示すために提供されます。
このクイックスタートでは、Camel ルートは EAP_HOME/standalone/data/orders
からファイルを消費し、コンテンツを OrdersQueue
という名前のインメモリー ActiveMQ Artemis キューに配置します。別の Camel ルートは OrdersQueue
の内容を使用し、EAP_HOME/standalone/data/orders/processed
内で個別の国ディレクトリーへの注文を並べ替えます。
アプリケーションがデプロイおよびアンデプロイされるときに、JMS OrdersQueue
の作成および削除を処理する OrdersQueue
CLI スクリプトが CLI コマンドによって作成および削除されます。これらのスクリプトは EAP_HOME/quickstarts/camel-jms/src/main/resources/cli
ディレクトリー内にあります。
前提条件
このクイックスタートを実行するには、作業バージョンの Fuse 7.13 が必要です。
外部 AMQ 7 ブローカーに接続するには、Using JBoss AMQ for remote JMS Communication の手順にも従う必要があります。続いて、デフォルトの接続ファクトリーと同じように、接続ファクトリーを注入できます。
@Resource(mappedName = "java:jboss/RemoteJmsXA") ConnectionFactory connectionFactory;
クイックスタートのセットアップ
- JBOSS EAP をスタンドアロンモードで起動します。
-
EAP_HOME/quickstarts/camel/camel-jms
に移動します。 -
mvn clean install -Pdeploy`
を入力して、クイックスタートをビルドおよびデプロイします。 - http://localhost:8080/example-camel-jms を参照します。
'Orders Received' というタイトルのページが表示されるはずです。サンプルアプリケーションに注文を送信すると、国ごとの注文リストがこのページに表示されます。
クイックスタートの実行
EAP_HOME/quickstarts/camel/camel-jms/src/main/resources
ディレクトリー内の順序 XML ファイルの例があります。Camel は 5 秒ごとにランダムにファイルを選択し、処理のために EAP_HOME/standalone/data/orders
にコピーします。
コンソールには、各注文で何が発生したかを説明するメッセージが出力されます。出力は以下のようになります。
JmsConsumer[OrdersQueue]) Sending order to the UK JmsConsumer[OrdersQueue]) Sending order to another country JmsConsumer[OrdersQueue]) Sending order to the US
ファイルが消費されると、http://localhost:8080/example-camel-jms/orders に戻ることができます。各国の受注の数が 1 増えているはずです。
処理されたすべての注文は、以下の宛先に分割されます。
EAP_HOME/standalone/data/orders/processed/uk EAP_HOME/standalone/data/orders/processed/us EAP_HOME/standalone/data/orders/processed/other
アンデプロイ
例をアンデプロイするには、EAP_HOME/quickstarts/camel/camel-jms
が mvn clean -Pdeploy
を実行するようにします。