169.9. エンドポイントを再利用してランタイム時に計算される異なる宛先に送信する


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

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

Expand
ヘッダーType説明

CamelJmsDestination

javax.jms.Destination

宛先オブジェクト。

CamelJmsDestinationName

文字列

宛先名。

たとえば、以下のルートはランタイム時に宛先を計算し、これを使用して JMS URL に表示される宛先を上書きする方法を示しています。

from("file://inbox")
  .to("bean:computeDestination")
  .to("activemq:queue:dummy");

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

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

public void setJmsHeader(Exchange exchange) {
   String id = ....
   exchange.getIn().setHeader("CamelJmsDestinationName", "order:" + id");
}

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

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

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る