搜索

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

download PDF

JMS 组件比较复杂,您必须密切注意它在某种情况下的工作方式。因此,这是要查找的一些区域/区域的简短摘要。

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

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

所有这些都很复杂,需要理解并配置 以支持您的用例。

51.10.1. JmsProducer

根据配置,Jms Producer 的行为如下:

Exchange Pattern其他选项描述

InOut

-

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

InOut

设置了 JMSReplyTo

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

InOnly

-

Camel 将发送消息,而不是 预期回复。

InOnly

设置了 JMSReplyTo

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

51.10.2. JmsConsumer

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

Exchange Pattern其他选项描述

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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

© 2024 Red Hat, Inc.