首页 文章

如何编写同时处理请求的camel路由

提问于
浏览
0

我正在尝试编写一个消耗来自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中的每个请求 .

我怎样才能做到这一点?

非常感谢你 .

1 回答

  • 4

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

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

相关问题