第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 で利用できます。