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.第132章 RabbitMQ
RabbitMQ コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.12 以降で利用可能
rabbitmq: コンポーネントを使用すると、RabbitMQ インスタンスからメッセージを生成および消費できます。RabbitMQ AMQP クライアントを使用して、このコンポーネントは汎用 AMQP コンポーネントに純粋な RabbitMQ アプローチを提供します。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
rabbitmq://hostname[:port]/exchangeName?[options]
rabbitmq://hostname[:port]/exchangeName?[options]
hostname は、実行中の rabbitmq インスタンスまたはクラスターのホスト名です。port はオプションであり、指定されていない場合、デフォルトでは RabbitMQ クライアントのデフォルト(5672)に設定されます。交換名は、生成されたメッセージの送信先となるエクスチェンジを決定します。コンシューマーの場合、エクスチェンジ名はキューがバインドするエクスチェンジを決定します。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロパティー | デフォルト | 説明 |
---|---|---|
autoAck
|
true
|
メッセージを自動承認するかどうか。 |
autoDelete
|
true
|
true の場合、エクスチェンジは使用されなくなったときに削除されます。 |
durable
|
true
|
永続エクスチェンジを宣言する場合(エクスチェンジはサーバーの再起動後も維持されます)。 |
queue
|
ランダムな uuid
|
メッセージを受信するキュー。 |
routingKey
|
null
|
コンシューマーキューをエクスチェンジにバインドするときに使用するルーティングキー。プロデューサールーティングキーの場合は、ヘッダーを設定します(ヘッダーセクションを参照)。 |
threadPoolSize
|
10
|
コンシューマーは、一定数のスレッドを持つスレッドプールエグゼキューターを使用します。この設定により、そのスレッド数を設定できます。 |
username
|
null
|
アクセスが認証された場合のユーザー名。 |
password
|
null
|
認証されたアクセスのパスワード。 |
vhost
|
/
|
チャネルの vhost。 |
exchangeType
|
direct
|
Camel 2.12.2: direct や topic などのエクスチェンジタイプ。
|
bridgeEndpoint
|
false
|
Camel 2.12.3: bridgeEndpoint が true の場合、プロデューサーは rabbitmq.EXCHANGE_NAME および "rabbitmq.ROUTING_KEY" のメッセージヘッダーを無視します。
|
addresses
|
null
|
Camel 2.12.3: このオプションを設定すると、camel-rabbitmq はオプションアドレスの設定に基づいて接続の作成を試みます。addresses 値は、server1:12345、server2:12345 などの文字列です。
|
connectionTimeout
|
0
|
Camel 2.14: 接続のタイムアウト。
|
requestedChannelMax
|
0
|
Camel 2.14: 接続要求されたチャネルの最大数(提供されたチャネルの最大数)。
|
requestedFrameMax
|
0
|
Camel 2.14: Connection requested frame max (max size of frame)
|
requestedHeartbeat
|
0
|
Camel 2.14: 接続が要求されたハートビート(大ツは秒単位)。
|
sslProtocol
|
null
|
Camel 2.14: 接続時に SSL を有効にし、許可される値は 'true'、'TLS'、および 'SSLv3' です。
|
trustManager
|
null
|
Camel 2.14: SSL トラストマネージャーを設定します。このオプションを有効にするには、SSL を有効にする必要があります。
|
clientProperties
|
null
|
Camel 2.14: 接続クライアントプロパティー(サーバーとネゴシエートするために使用されるクライアント情報)。
|
connectionFactory
|
null
|
Camel 2.14: カスタムの RabbitMQ 接続ファクトリー。このオプションを設定すると、URI に設定されたすべての接続オプション(connectionTimeout、requestedChannelMax....)は使用されません。
|
automaticRecoveryEnabled
|
false
|
Camel 2.14: 接続の自動リカバリーを有効にします(接続シャットダウンがアプリケーションによって開始されていない場合に自動リカバリーを実行する接続実装を使用)。
|
networkRecoveryInterval
|
5000
|
Camel 2.14: ネットワークの回復間隔(ネットワーク障害からの復旧時に使用される間隔)。
|
topologyRecoveryEnabled
|
true
|
Camel 2.14: 接続トポロジーリカバリーを有効にします(トポロジーリカバリーは実行されませんか ?)。
|
prefetchEnabled
|
false
|
Camel 2.14: RabbitMQConsumer 側で QoS を有効にします。prefetchSize、prefetchCount、prefetchGlobal のオプションを同時に指定する必要があります。
|
prefetchSize
|
0
|
Camel 2.14: サーバーが配信するコンテンツの最大量(オクテットで測定)、無制限の場合は 0。
|
prefetchCount
|
0
|
Camel 2.14: サーバーが配信するメッセージの最大数。無制限の場合は 0。
|
prefetchGlobal
|
false
|
Camel 2.14: 設定を各コンシューマーではなくチャネル全体に適用する必要がある場合。
|
declare
|
true
|
Camel 2.14: オプションが true の場合、Camel はエクスチェンジとキューの名前を宣言し、それらをバインドします。オプションが false の場合、Camel はサーバー上でエクスチェンジおよびキュー名を宣言しません。 |
concurrentConsumers
|
1
|
Camel 2.14: ブローカーから消費する同時コンシューマーの数( JMS コンポーネントの同じオプションと同様)。 |
deadLetterRoutingKey
|
Camel 2.14: デッドレターエクスチェンジのルーティングキー。 | |
deadLetterExchange
|
Camel 2.14: デッドレターエクスチェンジの名前。 | |
deadLetterExchangeType
|
direct
|
Camel 2.14: デッドレターエクスチェンジのタイプ。 |
channelPoolMaxSize
|
10
|
Camel 2.14.1 (Producer のみ): メッセージの送信に使用されるチャネルの最大数。 |
channelPoolMaxWait
|
1000
|
Camel 2.14.1 (Producer のみ ): チャネルを待つ最大時間(ミリ秒単位)。 |
queueArgsConfigurer
|
null
|
Camel 2.15.1: キューを宣言するときに Args マップを設定するために使用できるカスタム ArgsConfigurer インスタンス。
|
exchangeArgsConfigurer
|
null
|
Camel 2.15.1: エクスチェンジの宣言時に Args マップを設定するために使用できるカスタム ArgsConfigurer インスタンス。
|
requestTimeout
|
20000
|
Camel 2.16: プロデューサーのみ。InOut Exchange Pattern (ミリ秒単位)の使用時に応答を待機するタイムアウト。デフォルトは 40 秒です。requestTimeoutCheckerInterval オプションも参照してください。
|
requestTimeoutCheckerInterval
|
1000
|
Camel 2.16: RabbitMQ 経由でリクエスト/リプライを行うときに Camel がタイムアウトしたエクスチェンジをチェックする頻度を設定します。デフォルトでは、Camel は 1 秒あたり 1 回チェックします。ただし、タイムアウトの発生時に迅速な反応が必要な場合は、この間隔を下げてより頻繁にチェックできます。タイムアウトは requestTimeout オプションによって決定されます。
|
transferException
|
false
|
Camel 2.16: 有効で、リクエスト応答メッセージング(InOut)を使用し、コンシューマー側でエクスチェンジが失敗した場合、原因となった例外は応答で byte[] として送り返されます。クライアントが Camel の場合、返される例外が再出力されます。これにより、Camel RabbitMQ をルーティングのブリッジとして使用できます。たとえば、永続キューを使用して堅牢なルーティングを有効にすることができます。キャッチされた例外はシリアライズ可能である必要があります。コンシューマー側の元の例外は、プロデューサーに返される場合に org.apache.camel.RuntimeCamelException などの外部例外でラップできます。
|
skipQueueDeclare
|
false
|
Camel 2.16.1: true の場合、プロデューサーはキューを宣言してバインドしません。これは、既存のルーティングキーを介してメッセージを転送するために使用できます。
|
publisherAcknowledgements
|
false
|
Camel 2.17: true の場合、メッセージはパブリッシャーの確認が有効になっている状態で公開されます。
|
publisherAcknowledgementsTimeout
|
0
|
Camel 2.17: RabbitMQ サーバーからの basic.ack 応答を待つ時間(ミリ秒単位)。
|
カスタム接続ファクトリー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Headers リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のヘッダーは、メッセージ消費時にエクスチェンジに設定されます。
プロパティー | 値 |
---|---|
rabbitmq.ROUTING_KEY
|
メッセージの受信に使用されたルーティングキー、またはメッセージの生成時に使用されるルーティングキー |
rabbitmq.EXCHANGE_NAME
|
メッセージが受信されたエクスチェンジ |
rabbitmq.DELIVERY_TAG
|
受信したメッセージの rabbitmq 配信タグ |
rabbitmq.REQUEUE
|
Camel 2.14.2: これは、コンシューマーがメッセージの拒否を制御するために使用されます。コンシューマーがエクスチェンジの処理を完了し、エクスチェンジが失敗した場合、コンシューマーは RabbitMQ ブローカーからのメッセージを拒否します。このヘッダーの値はこの動作を制御します。false の場合、メッセージは破棄/停止文字されます。true の場合、メッセージは再度キューに置かれます。デフォルトは false です。
|
以下のヘッダーはプロデューサーによって使用されます。camel エクスチェンジにこれらが設定されている場合、RabbitMQ メッセージに設定されます。
プロパティー | 値 |
---|---|
rabbitmq.ROUTING_KEY
|
メッセージの送信時に使用されるルーティングキー |
rabbitmq.EXCHANGE_NAME
|
メッセージが受信された、または送信されたエクスチェンジ |
rabbitmq.CONTENT_TYPE
|
RabbitMQ メッセージに設定する contentType |
rabbitmq.PRIORITY
|
RabbitMQ メッセージに設定する優先度ヘッダー |
rabbitmq.CORRELATIONID
|
RabbitMQ メッセージに設定する correlationId |
rabbitmq.MESSAGE_ID
|
RabbitMQ メッセージに設定するメッセージ ID |
rabbitmq.DELIVERY_MODE
|
メッセージを永続化すべきかどうか |
rabbitmq.USERID
|
RabbitMQ メッセージに設定する userId |
rabbitmq.CLUSTERID
|
RabbitMQ メッセージに設定する clusterId |
rabbitmq.REPLY_TO
|
RabbitMQ メッセージに設定する replyTo |
rabbitmq.CONTENT_ENCODING
|
RabbitMQ メッセージに設定する contentEncoding |
rabbitmq.TYPE
|
RabbitMQ メッセージに設定するタイプ |
rabbitmq.EXPIRATION
|
RabbitMQ メッセージに設定する有効期限 |
rabbitmq.TIMESTAMP
|
RabbitMQ メッセージに設定するタイムスタンプ |
rabbitmq.APP_ID
|
RabbitMQ メッセージに設定する appId |
メッセージが受信されると、ヘッダーはコンシューマーによって設定されます。プロデューサーは、エクスチェンジが実行されると、ダウンストリームプロセッサーのヘッダーも設定します。実稼働前に設定されたヘッダーは、プロデューサーセットがオーバーライドされます。
メッセージボディー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、ボディーの Camel エクスチェンジを rabbit mq メッセージのボディーとして使用します。オブジェクトの Camel エクスチェンジはバイトアレイに変換できる必要があります。そうしないと、プロデューサーはサポートされていないボディータイプの例外を出力します。
サンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ルーティングキー B を使用してエクスチェンジ A にバインドされているキューからメッセージを受信するには、以下を実行します。
from("rabbitmq://localhost/A?routingKey=B")
from("rabbitmq://localhost/A?routingKey=B")
自動承認が無効になっている単一のスレッドを持つキューからメッセージを受信するには、以下を行います。
from("rabbitmq://localhost/A?routingKey=B&threadPoolSize=1&autoAck=false")
from("rabbitmq://localhost/A?routingKey=B&threadPoolSize=1&autoAck=false")
C というエクスチェンジにメッセージを送信するには、以下を行います。
...to("rabbitmq://localhost/B")
...to("rabbitmq://localhost/B")