我们可以在apache camel中使用jmsxgroupid和线程来解决线程dsl标签中的排序问题

时间:2015-06-27 13:13:23

标签: java multithreading apache apache-camel

您好我正在使用驼峰并有一个订购问题来解决我不希望在多个线程中并行处理相同的事务或组以解决相同的问题我计划使用JMSXGROUPID标头{{3解决同样的问题。我的问题是这可以与threads标签/ dsl

一起使用
<route id="consumer" autoStartup="true">
        <description>processing route</description>
        <from uri="direct:consumer" />
        <!-- <log message="Received ${body}:${threadName}" /> -->
        <threads executorServiceRef="sfIboundThreadPool">
            <log message="Got ${body}:${threadName} for processing" marker="CAMELLOG" />
            <setProperty propertyName="step">
                <simple>reader</simple>
            </setProperty>
            <process ref="reader" />

这里产生的多个线程正在使用配置的theadpool。如果我将标头放置到消费者路由的消息中,我的问题就是这些线程使用JMSXGROUPID。

1 个答案:

答案 0 :(得分:3)

在这里阅读JMS消息组

使用时,保证从同一组顺序处理它们。但您可以并行处理多个组。

因此,您不需要使用Camel的线程,只需将JMS / ActiveMQ端点配置为使用concurrentConsumers,您就可以更轻松地使用它。