我很骆驼,所以如果这很明显,请原谅我。
我们正在尝试设置一个骆驼路线(在talend esb中),它执行以下操作:
这是一条路线。 我发现的是该路由在等待3中的回复时不再接受1中的消息。
我曾尝试在JMS组件上使用“asyncConsumer”参数,但这没有帮助。
如何设计路由,以便在仍在等待3中的回复时处理第二个(以及更多)消息?
谢谢, LACI
答案 0 :(得分:2)
Petter解释的参数将有所帮助,但您仍将阻止线程。另一种方法是将集成设计为两个单独的路径。在第一个路由中,您将收到jms消息,更新数据库并发送第二条消息。
如果在此路由的生产者上使用InOnly并设置JMSReplyTo以及preserveMessageQuo = true,则camel将发送消息但不等待回复。
然后使用第二个路由侦听对指定队列的回复,并执行第二个db更新。这样你就不会阻塞任何线程。
答案 1 :(得分:1)
使用concurrentConsumers属性。它将使多个线程能够处理您的负载。请注意,您必须指定线程数。对于所有选项,这可能有点复杂,因此请务必正确阅读Camel JMS文档。
示例
from("jms:myQueue?concurrentConsumers=10")
您可能还想在请求回复的回复队列中指定concurrentConsumers:
.inOut().to("jms:requestQueue:foo?concurrentConsumers=10")
最后一部分需要version 2.10.3。