28.13.2. 请求 - 在 JMS 上,使用专用的固定回复队列


在上例中,Camel 会预测名为"bar"的固定回复队列是共享的,因此它使用 JMSSelector 来仅使用它预期的回复消息。但是,这样做会有一个缺陷,因为 JMS 选择器会较慢。另外,回复队列中的消费者在使用新的 JMS 选择器 ID 进行更新时会慢。实际上,它只有在 receiveTimeout 选项超时时才会更新,默认为 1 秒。因此,在理论上,可以发现回复信息,大约需要检测到 1 sec。如果固定的回复队列专用于 Camel 回复消费者,我们可以避免使用 JMS 选择器,从而更高性能。事实上,就像使用临时队列一样快。您可以将 ReplyToType 选项配置为排除
,以告知 Camel 回复队列是独占的,如下例所示:

from(xxx)
.inOut().to("activemq:queue:foo?replyTo=bar&replyToType=Exclusive")
.to(yyy)
Copy to Clipboard Toggle word wrap

请记住,队列必须相互排斥。因此,如果您有两个路由,则每个路由都需要一个唯一的回复队列,如下例中所示:

from(xxx)
.inOut().to("activemq:queue:foo?replyTo=bar&replyToType=Exclusive")
.to(yyy)

from(aaa)
.inOut().to("activemq:queue:order?replyTo=order.reply&replyToType=Exclusive")
.to(bbb)
Copy to Clipboard Toggle word wrap

如果在集群环境中运行,同样适用。然后,集群中的每个节点都必须使用唯一的回复队列名称。否则,集群中的每个节点都可以选择预期在另一个节点上回复的信息。对于集群环境,建议您使用共享回复队列。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat