gpt4 book ai didi

java - 如何编写并发处理请求的 Camel 路由

转载 作者:行者123 更新时间:2023-12-01 18:25:53 25 4
gpt4 key购买 nike

我正在尝试编写一个 Camel 路由,该路由消耗来自 JMS 队列的传入消息并在不同的线程中同时处理它们。我得到的 Camel 路线是这样的:

<camel:endpoint id="requestQueue" uri="jms:queue.request" camelContextId="camel"/>
<camel:endpoint id="responseQueue" uri="jms:queue.response" camelContextId="camel"/>

<camel:camelContext id="camel">
<camel:threadPool id="serviceThreadPool" poolSize="10" threadName="workerThread" maxPoolSize="20"/>

<camel:route id="requestServingRoute">
<camel:from ref="requestQueue"/>

<camel:threads executorServiceRef="serviceThreadPool">
<camel:to uri="bean:doSomething"/>
<camel:to ref="responseQueue"/>
</camel:threads>
</camel:route>
</camel:camelContext>

但是,我可以观察到传入的消息确实是由单独的线程处理的,但它们是按顺序处理的。

我试图实现的是,camel 在单独的线程中为每个传入请求处理 doSomething bean 中的每个请求。

我怎样才能实现这个目标?

非常感谢。

最佳答案

您需要指定 JMS 请求队列的并发使用者数量。请参阅http://camel.apache.org/jms.html 。您不需要向线程池发送消息。例如,在 Java DSL 语法中,您可以编写如下内容:

from("jms:queue.request?concurrentConsumers=10")
.beanRef("bean", "doSomething")
.to("jms:queue.response)

关于java - 如何编写并发处理请求的 Camel 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26203783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com