51.10. 关于使用 Camel 来发送和接收消息和 JMSReplyTo
JMS 组件比较复杂,您必须密切注意它在某种情况下的工作方式。因此,这是要查找的一些区域/区域的简短摘要。
当 Camel 使用其 JMSProducer
发送消息时,它会检查以下条件:
- 消息交换模式,
-
是否在端点或消息标头中设置
JMSReplyTo
。 -
是否在 JMS 端点上设置了任何以下选项:
disableReplyTo
,preserveMessageQos
,explicitQosEnabled
。
所有这些都很复杂,需要理解并配置 以支持您的用例。
51.10.1. JmsProducer
根据配置,Jms Producer
的行为如下:
Exchange Pattern | 其他选项 | 描述 |
---|---|---|
InOut | - |
Camel 将期望一个回复,设置一个临时 |
InOut |
设置了 |
Camel 将预期回复,在发送消息后,它将开始侦听指定的 |
InOnly | - | Camel 将发送消息,而不是 预期回复。 |
InOnly |
设置了 |
默认情况下,Camel 会丢弃 |
51.10.2. JmsConsumer
JmsConsumer
的行为如下,具体取决于配置:
Exchange Pattern | 其他选项 | 描述 |
---|---|---|
InOut | - |
Camel 将回复发回到 |
InOnly | - | Camel 不会发送回复,因为模式是 InOnly。 |
- |
| 这个选项阻止回复。 |
请注意在交换上设置的消息交换模式。
如果您在路由中间向 JMS 目的地发送消息,您可以指定要使用的交换模式,请参阅 Request Reply。
如果您要向 JMS 主题发送 InOnly
消息,这非常有用:
from("activemq:queue:in") .to("bean:validateOrder") .to(ExchangePattern.InOnly, "activemq:topic:order") .to("bean:handleOrder");