169.8. Camel を使用したメッセージの送受信と JMSReplyTo について


JMS コンポーネントは複雑で、場合によってはその動作に細心の注意を払う必要があります。したがって、これは探すべき領域/落とし穴のいくつかの簡単な要約です.

Camel が JMSProducer を使用してメッセージを送信すると、次の条件がチェックされます。

  • メッセージ交換パターン、
  • JMSReplyTo がエンドポイントまたはメッセージヘッダーで設定されたかどうか、
  • 次のいずれかのオプションが JMS エンドポイントに設定されているかどうか: disableReplyTopreserveMessageQosexplicitQosEnabled

これらすべてを理解し、ユースケースをサポートするように設定するには、少し複雑になる可能性があります。

169.8.1. JmsProducer

JmsProducer は、設定に応じて次のように動作します。

交換パターンその他のオプション説明

InOut

-

Camel は応答を期待し、一時的な JMSReplyTo を設定し、メッセージを送信した後、一時キューで応答メッセージのリッスンを開始します。

InOut

JMSReplyTo が設定されている

Camel は応答を期待し、メッセージの送信後、指定された JMSReplyTo キューで応答メッセージのリッスンを開始します。

InOnly

-

Camel はメッセージを送信しますが、返信は期待 しません

InOnly

JMSReplyTo が設定されている

デフォルトでは、Camel は JMSReplyTo 宛先を破棄し、メッセージを送信する前に JMSReplyTo ヘッダーをクリアします。その後、Camel はメッセージを送信し、応答を期待 しません。Camel はこれを WARN レベルでログに記録します (Camel 2.6 以降では DEBUG レベルに変更されました。preserveMessageQuo=true を使用して、Camel に JMSReplyTo を保持するように指示できます。すべての状況で、JmsProducer は応答を期待 しない ため、メッセージの送信後に続行します。

169.8.2. JmsConsumer

JmsConsumer は、設定に応じて次のように動作します。

交換パターンその他のオプション説明

InOut

-

Camel は応答を JMSReplyTo キューに送り返します。

InOnly

-

パターンが InOnly であるため、Camel は返信を返しません。

-

disableReplyTo=true

このオプションは、返信を抑制します。

そのため、取引所に設定されているメッセージ交換パターンに注意してください。

ルートの途中で JMS 宛先にメッセージを送信する場合は、使用する交換パターンを指定できます。詳細については、Request Reply を参照してください。
これは、InOnly メッセージを JMS トピックに送信する場合に便利です。

from("activemq:queue:in")
   .to("bean:validateOrder")
   .to(ExchangePattern.InOnly, "activemq:topic:order")
   .to("bean:handleOrder");
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.