第6章 Camel コンポーネント
本章では、サポートされる Camel コンポーネントについて詳しく説明します。
6.1. camel-activemq リンクのコピーリンクがクリップボードにコピーされました!
Camel ActiveMQ インテグレーションは activemq コンポーネントによって提供されます。
コンポーネントは、埋め込みまたは外部ブローカーと連携するように設定できます。Wildfly / EAP コンテナー管理接続プールと XA-Transaction サポートの場合、ActiveMQ リソースアダプター はコンテナー設定ファイルに設定できます。
6.1.1. JBoss EAP ActiveMQ リソースアダプターの設定 リンクのコピーリンクがクリップボードにコピーされました!
ActiveMQ リソースアダプターの rar ファイル をダウンロードします。以下の手順で、ActiveMQ リソースアダプターを設定する方法の概要を説明します。
- JBoss EAP インスタンスを停止します。
リソースアダプターをダウンロードし、該当する JBoss EAP デプロイメントディレクトリーにコピーします。スタンドアロンモードの場合:
cp activemq-rar-5.11.1.rar ${JBOSS_HOME}/standalone/deployments/activemq-rar.rar
cp activemq-rar-5.11.1.rar ${JBOSS_HOME}/standalone/deployments/activemq-rar.rar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ActiveMQ アダプターの JBoss EAP リソースアダプターサブシステムを設定します。
リソースアダプターアーカイブのファイル名が activemq-rar.rar と異なる場合は、前述の設定のアーカイブ要素の内容を変更し、アーカイブファイルの名前に一致させる必要があります。
外部ブローカーの有効なユーザーのクレデンシャルに一致するように、UserName および Password 設定プロパティーの値を選択する必要があります。
外部ブローカーによって公開される実際のホスト名およびポートに一致するように ServerUrl 設定プロパティーの値を変更する必要がある場合があります。
4) JBoss EAP を起動します。すべてが正しく設定されていれば、JBoss EAP の server.log に以下のようなメッセージが記録されるはずです。
13:16:08,412 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-5) JBAS010406: Registered connection factory java:/AMQConnectionFactory`
13:16:08,412 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-5) JBAS010406: Registered connection factory java:/AMQConnectionFactory`
6.1.2. Camel ルートの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の ActiveMQ プロデューサーおよびコンシューマーの例では、ActiveMQ 埋め込みブローカーと 'vm' トランスポートを使用します (したがって、外部 ActiveMQ ブローカーが必要なくなりました)。
この例では、CDI を camel-cdi コンポーネントと併用します。JMS ConnectionFactory インスタンスは、JNDI ルックアップを介して Camel RouteBuilder に注入されます。
6.1.2.1. ActiveMQ プロデューサー リンクのコピーリンクがクリップボードにコピーされました!
メッセージが WildFlyCamelQueue 宛先に追加されるたびに、ログメッセージがコンソールに出力されます。メッセージが実際にキューに配置されていることを確認するには、Camel on EAP サブシステムによって提供される ../features/hawtio.md[Hawtio console,window=_blank] を使用できます。
6.1.2.2. ActiveMQ コンシューマー リンクのコピーリンクがクリップボードにコピーされました!
ActiveMQ メッセージを消費するため、Camel RouteBuilder 実装はプロデューサーの例と似ています。
ActiveMQ エンドポイントが WildFlyCamelQueue 宛先からのメッセージを消費すると、内容がコンソールに記録されます。
@Override public void configure() throws Exception { from("activemq:queue:WildFlyCamelQueue?brokerURL=vm://localhost") .to("log:jms?showAll=true"); }
@Override
public void configure() throws Exception {
from("activemq:queue:WildFlyCamelQueue?brokerURL=vm://localhost")
.to("log:jms?showAll=true");
}
6.1.2.3. ActiveMQ トランザクション リンクのコピーリンクがクリップボードにコピーされました!
6.1.2.3.1. ActiveMQ リソースアダプターの設定 リンクのコピーリンクがクリップボードにコピーされました!
XA トランザクションのサポート、接続プールなどを利用するには、ActiveMQ リソースアダプターが必要です。
以下の XML スニペットは、リソースアダプターが JBoss EAP サーバーの XML 設定内でどのように設定されるかを示しています。ServerURL
は組み込みブローカーを使用するように設定されていることに注意してください。接続ファクトリーは JNDI 名 java:/ActiveMQConnectionFactory
にバインドされます。これは、以下の RouteBuilder の例で検索されます。
最後に、'queue1' と 'queue2' という名前の 2 つのキューが設定されます。
6.1.2.4. トランザクションマネージャー リンクのコピーリンクがクリップボードにコピーされました!
camel-activemq コンポーネントには、タイプ org.springframework.transaction.PlatformTransactionManager
のトランザクションマネージャーが必要です。そのため、最初にこの要件を満たす JtaTransactionManager
を拡張する Bean を作成します。Bean には @Named
アノテーションが付けられており、Camel Bean レジストリー内に Bean を登録できることに注意してください。また、JBoss EAP トランザクションマネージャーとユーザートランザクションインスタンスは CDI を使用して注入されることにも注意してください。
6.1.2.5. トランザクションポリシー リンクのコピーリンクがクリップボードにコピーされました!
次に、使用するトランザクションポリシーを宣言する必要があります。ここでも、@Named
アノテーションを使用して Bean を Camel で利用可能にします。また、トランザクションマネージャーも、必要なトランザクションポリシーで TransactionTemplate
を作成できるように注入されます。このインスタンスの PROPAGATION_REQUIRED
6.1.2.6. ルートビルダー リンクのコピーリンクがクリップボードにコピーされました!
これで、Camel RouteBuilder クラスを設定し、Camel ActiveMQ コンポーネントに必要な依存関係を注入できるようになりました。リソースアダプター設定に設定した ActiveMQ 接続ファクトリーは、以前に設定したトランザクションマネージャーと共に注入されます。
この例の RouteBuilder では、queue1 から任意のメッセージが消費されるたびに、メッセージは queue2 という名前の別の JMS キューにルーティングされます。queue2 から消費されるメッセージにより、rollback() DSL メソッドを使用して JMS トランザクションがロールバックされます。これにより、元のメッセージがデッドレターキュー (DLQ) に配置されます。
6.1.3. セキュリティー リンクのコピーリンクがクリップボードにコピーされました!
JMS のセキュリティー セクションを参照してください。
6.1.4. GitHub のコード例 リンクのコピーリンクがクリップボードにコピーされました!
camel-activemq アプリケーション のサンプルは GitHub で利用できます。