63.11. エンドポイントを再利用し、実行時に計算されたさまざまな宛先に送信します


多数の異なる RabbitMQ 交換にメッセージを送信する必要がある場合は、エンドポイントを再利用し、メッセージヘッダーで実際の宛先を指定する必要があります。これにより、Camel は同じエンドポイントを再利用できますが、異なるエクスチェンジに送信できます。これにより、作成されるエンドポイントの数が大幅に削減され、メモリーとスレッドリソースが節約されます。

ヘッダーで動的宛先を指定するよりも、toD を使用する方が簡単です。

次のヘッダーを使用して指定できます。

Expand
ヘッダータイプ説明

CamelSpringRabbitmqExchangeOverrideName

String

エクスチェンジ名。

CamelSpringRabbitmqRoutingOverrideKey

String

ルーティングキー。

たとえば、次のルートは、実行時に宛先を計算し、それを使用してエンドポイント URL に表示される交換をオーバーライドする方法を示しています。

from("file://inbox")
  .to("bean:computeDestination")
  .to("spring-rabbitmq:dummy");
Copy to Clipboard Toggle word wrap

交換名 dummy は単なるプレースホルダーです。これは RabbitMQ エンドポイント URL の一部として指定する必要がありますが、この例では無視されます。

computeDestination Bean で、次のように CamelRabbitmqExchangeOverrideName ヘッダーを設定して実際の宛先を指定します。

public void setExchangeHeader(Exchange exchange) {
   String region = ....
   exchange.getIn().setHeader("CamelSpringRabbitmqExchangeOverrideName", "order-" + region);
}
Copy to Clipboard Toggle word wrap

Camel はこのヘッダーを読み取り、エンドポイントで設定された名前の代わりに交換名として使用します。したがって、この例では、region 値が emea であると仮定して、Camel はメッセージを spring-rabbitmq:order-emea に送信します。

プロデューサは、ルート内での偶発的なループ (メッセージが別の RabbitMQ エンドポイントに転送されるシナリオ) を避けるために、交換から CamelSpringRabbitmqExchangeOverrideName ヘッダーと CamelSpringRabbitmqRoutingOverrideKey ヘッダーの両方を削除し、作成された Rabbitmq メッセージにそれらを伝播しません。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat