第132章 RabbitMQ


RabbitMQ コンポーネント

Camel 2.12 以降で利用可能
rabbitmq: コンポーネントを使用すると、RabbitMQ インスタンスからメッセージを生成および消費できます。RabbitMQ AMQP クライアントを使用して、このコンポーネントは汎用 AMQP コンポーネントに純粋な RabbitMQ アプローチを提供します。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-rabbitmq</artifactId>
    <version>2.17.0.redhat-630xxx</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

URI 形式

rabbitmq://hostname[:port]/exchangeName?[options]
Copy to Clipboard Toggle word wrap
hostname は、実行中の rabbitmq インスタンスまたはクラスターのホスト名です。port はオプションであり、指定されていない場合、デフォルトでは RabbitMQ クライアントのデフォルト(5672)に設定されます。交換名は、生成されたメッセージの送信先となるエクスチェンジを決定します。コンシューマーの場合、エクスチェンジ名はキューがバインドするエクスチェンジを決定します。

オプション

Expand
プロパティー デフォルト 説明
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 を有効にします。prefetchSizeprefetchCountprefetchGlobal のオプションを同時に指定する必要があります。
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 応答を待つ時間(ミリ秒単位)。

カスタム接続ファクトリー

<bean id="customConnectionFactory" class="com.rabbitmq.client.ConnectionFactory">
  <property name="host" value="localhost"/>
  <property name="port" value="5672"/>
  <property name="username" value="camel"/>
  <property name="password" value="bugsbunny"/>
</bean>
<camelContext>
  <route>
    <from uri="direct:rabbitMQEx2"/>
    <to uri="rabbitmq://localhost:5672/ex2?connectionFactory=#customConnectionFactory"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

Headers

以下のヘッダーは、メッセージ消費時にエクスチェンジに設定されます。
Expand
プロパティー
rabbitmq.ROUTING_KEY メッセージの受信に使用されたルーティングキー、またはメッセージの生成時に使用されるルーティングキー
rabbitmq.EXCHANGE_NAME メッセージが受信されたエクスチェンジ
rabbitmq.DELIVERY_TAG 受信したメッセージの rabbitmq 配信タグ
rabbitmq.REQUEUE Camel 2.14.2: これは、コンシューマーがメッセージの拒否を制御するために使用されます。コンシューマーがエクスチェンジの処理を完了し、エクスチェンジが失敗した場合、コンシューマーは RabbitMQ ブローカーからのメッセージを拒否します。このヘッダーの値はこの動作を制御します。false の場合、メッセージは破棄/停止文字されます。true の場合、メッセージは再度キューに置かれます。デフォルトは false です。
以下のヘッダーはプロデューサーによって使用されます。camel エクスチェンジにこれらが設定されている場合、RabbitMQ メッセージに設定されます。
Expand
プロパティー
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")
Copy to Clipboard Toggle word wrap
自動承認が無効になっている単一のスレッドを持つキューからメッセージを受信するには、以下を行います。
from("rabbitmq://localhost/A?routingKey=B&threadPoolSize=1&autoAck=false")
Copy to Clipboard Toggle word wrap
C というエクスチェンジにメッセージを送信するには、以下を行います。
...to("rabbitmq://localhost/B")
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat