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


JMS 组件比较复杂,您必须仔细注意它在一些情况下的工作方式。这是要查找的一些区域的简短总结。

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

  • 消息交换模式,
  • 在端点或消息标头中设置了 JMSReplyTo
  • 是否在 JMS 端点上设置了以下任何选项: disableReplyTo,preserveMessageQos,explicitQosEnabled

所有这些都很复杂,以了解和配置来支持您的用例。

179.10.1. JmsProducer

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

Expand
交换模式其他选项描述

InOut

-

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

InOut

JMSReplyTo is set

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

InOnly

-

Camel 将发送消息 且不会 期望回复。

InOnly

JMSReplyTo is set

默认情况下,Camel 会丢弃 JMSReplyTo 目的地,并在发送消息前清除 JMSReplyTo 标头。然后 Camel 会发送消息,且不会 期望回复。Camel 会在 WARN 级别登录时记录此项(从 Camel 2.6 开始更改为 DEBUG 级别)。您可以使用 preserveMessageQuo=true 来指示 Camel 保持 JMSReplyTo。在所有情况下,J msProducer 不会 期望任何回复,因此在发送消息后继续。

179.10.2. JmsConsumer

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

Expand
交换模式其他选项描述

InOut

-

Camel 会将回复发送回 JMSReplyTo 队列。

InOnly

-

Camel 将不会发送回复,因为模式是 InOnly

-

disableReplyTo=true

这个选项阻止回复。

因此,请注意交换上设置的消息交换模式。

如果您在路由中间向 JMS 目的地发送消息,您可以指定要使用的交换模式,请参阅 Request Reply。
如果您要向 JMS 主题发送 InOnly 消息,这很有用:

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

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部