178.14.2. 请求 - 在 JMS 上,使用专用的固定回复队列
作为 Camel 2.9 提供。
在上例中,Camel 会预测名为"bar"的固定回复队列是共享的,因此它使用 JMSSelector
来仅使用它预期的回复消息。但是,因为 JMS selectos 速度较慢,所以这样做的缺点。另外,回复队列中的消费者在使用新的 JMS 选择器 ID 进行更新时会慢。实际上,它只有在 receiveTimeout
选项超时时才会更新,默认为 1 秒。因此,在理论上,可以发现回复信息,大约需要检测到 1 sec。如果固定的回复队列专用于 Camel 回复消费者,我们可以避免使用 JMS 选择器,从而更高性能。事实上,就像使用临时队列一样快。在 Camel 2.9 开始,我们引入了 ReplyToType
选项,您可以将其配置为 排除
,以告知 Camel 认为该回复队列是独占的,如下例所示:
from(xxx) .inOut().to("activemq:queue:foo?replyTo=bar&replyToType=Exclusive") .to(yyy)
from(xxx)
.inOut().to("activemq:queue:foo?replyTo=bar&replyToType=Exclusive")
.to(yyy)
请记住,队列必须相互排斥。因此,如果您有两个路由,则每个路由都需要一个唯一的回复队列,如下例中所示:
如果在集群环境中运行,同样适用。然后,集群中的每个节点都必须使用唯一的回复队列名称。否则,集群中的每个节点都可以选择预期在另一个节点上回复的信息。对于集群环境,建议您使用共享回复队列。