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


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

次のヘッダーで宛先を指定できます。

Expand
ヘッダータイプ説明

CamelJmsDestination

javax.jms.Destination

宛先オブジェクト。

CamelJmsDestinationName

String

宛先名。

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

from("file://inbox")
  .to("bean:computeDestination")
  .to("activemq:queue:dummy");
Copy to Clipboard Toggle word wrap

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

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

public void setJmsHeader(Exchange exchange) {
   String id = ....
   exchange.getIn().setHeader("CamelJmsDestinationName", "order:" + id");
}
Copy to Clipboard Toggle word wrap

次に、Camel はこのヘッダーを読み取り、エンドポイントで設定されたものの代わりに宛先として使用します。したがって、この例では、id 値が 2 であると仮定して、Camel はメッセージを activemq:queue:order:2 に送信します。

CamelJmsDestination ヘッダーと CamelJmsDestinationName ヘッダーの両方が設定されている場合、CamelJmsDestination が優先されます。JMS プロデューサーは、CamelJmsDestination ヘッダーと CamelJmsDestinationName ヘッダーの両方を交換から削除し、作成された JMS メッセージに伝播しないことに注意してください。これは、ルートでの偶発的なループを回避するためです (メッセージが別の JMS エンドポイントに転送されるシナリオで)。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat