Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第2章 ActiveMQ
ActiveMQ コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ActiveMQ コンポーネントを使用すると、JMS Queue または Topic にメッセージを送信したり、Apache ActiveMQ を使用して JMS Queue または Topic からメッセージを消費したりできます。
このコンポーネントは JMS コンポーネントをベースとしており、送信に Spring の
JmsTemplate
を使用し、MessageListenerContainer
を使用して宣言的トランザクションに Spring の JMS サポートを使用します。JMS コンポーネントのすべてのオプションは、このコンポーネントにも適用されます。
このコンポーネントを使用するには、クラスパスに
camel-core.jar
、camel-spring.jar
、camel-jms.jar
などの Apache Camel 依存関係とともに activemq.jar
または activemq-core.jar
があることを確認してください。
トランザクションおよびキャッシュ
パフォーマンスに影響する可能 性があるため JMS でトランザクションを使用している場合は、JMS ページの以下のトランザクションレベルとキャッシュ レベルを参照してください。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
activemq:[queue:|topic:]destinationName
activemq:[queue:|topic:]destinationName
destinationName は ActiveMQ キューまたはトピック名です。デフォルトでは、destinationName はキュー名として解釈されます。たとえば、
FOO.BAR
キューに接続するには、以下を使用します。
activemq:FOO.BAR
activemq:FOO.BAR
必要に応じて、オプションの
queue:
接頭辞を含めることができます。
activemq:queue:FOO.BAR
activemq:queue:FOO.BAR
トピックに接続するには、
topic:
接頭辞を含める必要があります。たとえば、Stocks.Prices
トピックに接続するには、以下を使用します。
activemq:topic:Stocks.Prices
activemq:topic:Stocks.Prices
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
これらのオプションはすべてこのコンポーネントに適用されるため、JMS コンポーネントのオプションを参照してください。
Camel on EAP デプロイメント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上で簡素化されたデプロイメントモデルを提供する Camel on EAP (Wildfly Camel) フレームワークによってサポートされます。このモデルの詳細は、Deploying into a Web Server の Apache Camel on JBoss EAP の章を参照してください。
ActiveMQ Camel コンポーネントを設定して、組み込みブローカーまたは外部ブローカーのいずれかと連携できます。JBoss EAP コンテナーにブローカーを埋め込むには、EAP コンテナー設定ファイルに ActiveMQ リソースアダプターを設定します。詳細は、JBoss Active MQ リソースアダプターのインストール を参照してください。
接続ファクトリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の テストケース は、ActiveMQ への接続に使用される brokerURL を指定する一方で、
activeMQComponent ()
メソッド を使用して ActiveMQComponent を CamelContext に追加する方法を示しています。
camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
Spring XML を使用した接続ファクトリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ActiveMQComponent で以下のように ActiveMQ ブローカー URL を設定できます。
接続プールの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel を使用して ActiveMQ ブローカーに送信する場合は、プールされた接続ファクトリーを使用して JMS 接続、セッション、およびプロデューサーの効率的なプーリングを処理することが推奨されます。これは、ActiveMQ Spring Support のページに記載されています。
Maven で Jencks AMQ プールを使用できます。
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>_activemq-version_</version> </dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>_activemq-version_</version>
</dependency>
次に、activemq コンポーネントを以下のように設定します。
注記
プールされた接続ファクトリーの init メソッドおよび destroy メソッドに注意してください。これは、接続プールが適切に起動およびシャットダウンされるようにすることが重要です。
次に、
PooledConnectionFactory
は、同時に使用する最大 8 つの接続を持つ接続プールを作成します。各接続は、多くのセッションで共有できます。maxActive
という名前のオプションを使用して、接続ごとのセッションの最大数を設定できます。デフォルト値は 500
です。ActiveMQ 5.7 以降では、オプションの名前が maxActiveSessionPerConnection
という名前になるよう名前が変更されました。concurrentConsumers
は maxConnections
よりも高い値に設定されていることに注意してください。これは、各コンシューマーがセッションを使用し、セッションが同じ接続を共有できるため、安全です。この例では、8 * 500 = 4000 のアクティブなセッションを同時に指定できます。
ルートでの MessageListener POJO の呼び出し リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ActiveMQ コンポーネントは、JMS MessageListener をプロセッサーに変換するヘルパー Type Converter も提供します。つまり、Bean コンポーネントは任意のルート内で JMS MessageListener Bean を直接呼び出すことができます。
たとえば、以下のように JMS で MessageListener を作成できます。
public class MyListener implements MessageListener { public void onMessage(Message jmsMessage) { // ... } }
public class MyListener implements MessageListener {
public void onMessage(Message jmsMessage) {
// ...
}
}
次に、以下のようにルートでこれを使用します。
from("file://foo/bar"). bean(MyListener.class);
from("file://foo/bar").
bean(MyListener.class);
つまり、Apache Camel コンポーネント を再利用し、JMS
MessageListener
POJO に簡単に統合できます。
ActiveMQ 宛先オプションの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ActiveMQ 5.6 で利用可能
destination. 接頭辞を使用して、エンドポイント URI で Destination Options を設定できます。たとえば、コンシューマーを排他的としてマークし、その prefetch サイズを 50 に設定するには、次のように実行できます。
アドバイザリーメッセージの消費 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ActiveMQ は、消費できるトピックに含まれる Advisory メッセージ を生成できます。このようなメッセージは、低速なコンシューマーを検出したり、統計値(1 日あたりのメッセージ/生成の数など)を構築する場合にアラートを送信するのに役立ちます。 以下の Spring DSL の例は、トピックからメッセージを読み取る方法を示しています。
キューでメッセージを消費すると、data/activemq フォルダーの下に以下のファイルが表示されるはずです。
advisoryConnection-20100312.txt advisoryProducer-20100312.txt
文字列を含む :
コンポーネント JAR の取得 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この依存関係が必要です。
activemq-camel
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-camel</artifactId> <version>_activemq-version_</version> </dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-camel</artifactId>
<version>_activemq-version_</version>
</dependency>