178.10. 关于使用 Camel 发送和接收消息和 JMSReplyTo

JMS 组件很复杂,您必须关注它在一些情况下的运作方式。这是查找的部分区域/位置的简短概述。

当 Camel 使用其 JMSProducer 发送消息时,它会检查以下条件:

  • 消息交换模式,
  • JMSReplyTo 在端点或消息标头中设置,
  • 是否在 JMS 端点上设置了以下选项: disableReplyTo保留MessageQos , explicitQo sEnabled

所有这些都可能比较复杂,可以理解和配置以支持您的用例。

178.10.1. JmsProducer

JmsProducer 的行为如下,具体取决于配置:

Exchange Pattern其他选项描述

InOut

-

Camel 将期望一个回复,设置一个临时的 JMSReplyTo,并在发送消息后,它将开始侦听临时队列上的回复消息。

InOut

JMSReplyTo 设置

Camel 将期望一个回复,在发送消息后,它将开始侦听指定的 JMSReplyTo 队列上的回复消息。

InOnly

-

Camel 将发送消息,但并不能 预期回复。

InOnly

JMSReplyTo 设置

默认情况下,Camel 会丢弃 JMSReplyTo 目标,并在发送消息前清除 JMSReplyTo 标头。然后,Camel 会发送消息,并不会 预期回复。Camel 在 WARN 级别的日志中记录(Dchanged to DEBUG 级别,从 Camel 2.6 开始)。您可以使用 keep MessageQuo=true 来指示 Camel 保持 JMSReplyTo。在所有情况下,JmsProducer 并不 预期任何回复,因此在发送消息后继续继续。