28.13. 对 JMS 的请求
Camel 支持通过 JMS 重新请求。在向 JMS 队列发送消息时,交换的 MEP 应处于 out Out
状态。
Camel 提供多种选项来配置请求/相对于 JMS,这会影响性能和集群环境。下表总结了 选项。
Option | 性能 | 集群 | Description |
---|---|---|---|
| 速度快 | 是 |
临时队列用作回复队列,并由 Camel 自动创建。要使用此目的,不要指定 一个 replyTo 队列名称。您可以选择性地配置 |
| 速度较慢 | 是 |
共享持久队列用作回复队列。队列必须预先创建,虽然有些代理可以在 Apache ActiveMQ 等时创建它们。要使用此目的,您必须指定 replyTo 队列名称。您可以选择配置 |
| 速度快 | 否(*是) |
独占持久队列被用作回复队列。队列必须预先创建,虽然有些代理可以在 Apache ActiveMQ 等时创建它们。要使用此目的,您必须指定 replyTo 队列名称。您还必须配置 |
| 速度快 | 是 |
允许使用 中的并发消息监听程序同时处理回复消息。您可以使用 |
| 速度快 | 是 |
允许使用 中的并发消息监听程序同时处理回复消息。您可以使用 |
JmsProducer
检测了 InOut
,并提供要使用的回复目的地的 JMSReplyTo
标头。默认情况下,Camel 使用临时队列,但您可以使用端点上的 replyTo
选项指定固定的回复队列(请参阅以下关于固定回复队列的更多信息)。
Camel 将自动设置侦听回复队列的消费者,因此 不应 进行任何操作。
此使用者是一个 Spring DefaultMessageListenerContainer
,用于侦听回复。但是,它被修复为 1 个并发使用者。
这意味着回复将按顺序处理,因为只有 1 个线程处理回复。您可以使用 concurrentConsumers
和 maxConcurrentConsumers
选项,将监听程序配置为使用并发线程。这可让您在 Camel 中更轻松地配置它,如下所示:
from(xxx) .inOut().to("activemq:queue:foo?concurrentConsumers=5") .to(yyy) .to(zzz);
from(xxx)
.inOut().to("activemq:queue:foo?concurrentConsumers=5")
.to(yyy)
.to(zzz);
在该路由中,我们指示 Camel 使用具有 5 个线程的线程池异步路由回复。