6.2. camel-jms
camel-jms、camel-sjms、および camel-sjms2 エンドポイントをリモート AMQ 7 ブローカーに接続するサポート対象の方法は 2 つあります。
- JBoss EAP『Configuring Messaging』の「Configuring the Artemis Resource Adapter to Connect to Red Hat JBoss AMQ 7」セクションで説明されているように、pooled-connection-factory で remote-connector を設定する。
- connection-factory を使用した remote-connector の設定で説明されているように、connection-factory を使用して remote-connector を設定する。
接続プールと XA トランザクションのサポートを提供するため、最初のオプションが推奨される方法です。
永続サブスクライバーを使用するメッセージングシナリオでは、制限が 7 仕様によって課されたため、pooled-connection-factory は JBoss EAP 上の Fuse 7.4 ではサポートされません。このようなシナリオでは、標準のプール化されていない 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.4 にはデフォルトの内部メッセージングブローカーが含まれていませんが、外部 JMS ブローカーとインターフェースするように設計されています。
Fuse 7.4 on JBoss EAP は、「 Configuring Messaging on JBoss EAP to access external messaging broker」で説明するリソースアダプターを使用します。
Fuse 7.4 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.4 である必要があります。
外部 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
を実行するようにします。