169.8. Camel を使用したメッセージの送受信と JMSReplyTo について
JMS コンポーネントは複雑で、場合によってはその動作に細心の注意を払う必要があります。したがって、これは探すべき領域/落とし穴のいくつかの簡単な要約です.
Camel が JMSProducer
を使用してメッセージを送信すると、次の条件がチェックされます。
- メッセージ交換パターン、
-
JMSReplyTo
がエンドポイントまたはメッセージヘッダーで設定されたかどうか、 -
次のいずれかのオプションが JMS エンドポイントに設定されているかどうか:
disableReplyTo
、preserveMessageQos
、explicitQosEnabled
。
これらすべてを理解し、ユースケースをサポートするように設定するには、少し複雑になる可能性があります。
169.8.1. JmsProducer
JmsProducer
は、設定に応じて次のように動作します。
交換パターン | その他のオプション | 説明 |
---|---|---|
InOut | - |
Camel は応答を期待し、一時的な |
InOut |
|
Camel は応答を期待し、メッセージの送信後、指定された |
InOnly | - | Camel はメッセージを送信しますが、返信は期待 しません。 |
InOnly |
|
デフォルトでは、Camel は |
169.8.2. JmsConsumer
JmsConsumer
は、設定に応じて次のように動作します。
交換パターン | その他のオプション | 説明 |
---|---|---|
InOut | - |
Camel は応答を |
InOnly | - | パターンが InOnly であるため、Camel は返信を返しません。 |
- |
| このオプションは、返信を抑制します。 |
そのため、取引所に設定されているメッセージ交換パターンに注意してください。
ルートの途中で JMS 宛先にメッセージを送信する場合は、使用する交換パターンを指定できます。詳細については、Request Reply を参照してください。
これは、InOnly
メッセージを JMS トピックに送信する場合に便利です。
from("activemq:queue:in") .to("bean:validateOrder") .to(ExchangePattern.InOnly, "activemq:topic:order") .to("bean:handleOrder");