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