178.10. Camel を使用したメッセージの送受信と JMSReplyTo について
JMS コンポーネントは複雑で、場合によってはその動作に細心の注意を払う必要があります。したがって、これは探すべき領域/落とし穴のいくつかの簡単な要約です.
Camel が JMSProducer を使用してメッセージを送信すると、次の条件がチェックされます。
- メッセージ交換パターン、
-
JMSReplyToがエンドポイントまたはメッセージヘッダーで設定されたかどうか、 -
次のいずれかのオプションが JMS エンドポイントに設定されているかどうか:
disableReplyTo、preserveMessageQos、explicitQosEnabled。
これらすべてを理解し、ユースケースをサポートするように設定するには、少し複雑になる可能性があります。
178.10.1. JmsProducer
JmsProducer は、設定に応じて次のように動作します。
| 交換パターン | その他のオプション | 説明 |
|---|---|---|
| InOut | - |
Camel は応答を期待し、一時的な |
| InOut |
|
Camel は応答を期待し、メッセージの送信後、指定された |
| InOnly | - | Camel はメッセージを送信しますが、返信は期待 しません。 |
| InOnly |
|
デフォルトでは、Camel は |
178.10.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");