我有一个使用参数“concurrentConsumers = 5”的SEDA队列。现在,我正在尝试将其与Apache Camel Resequencer集成,以便能够在处理消息之前对消息进行重新排序,但是,当我这样做时,一次只处理一条消息。我想知道是否可以并行运行多个重定序器消息。
这是我的XML代码:
<route>
<from uri="seda:barSetup?concurrentConsumers=5" />
<resequence>
<batch-config batchSize="300" batchTimeout="40000"
allowDuplicates="true"/>
<simple>in.header.priority</simple>
<to uri="exec:cat" />
<to uri="bean:batchjobMonitor" />
<to uri="log:output" />
</resequence>
</route>
我对排队或骆驼不太熟悉,如果这是一个愚蠢的问题,对不起。
感谢。
答案 0 :(得分:3)
最后我解决了这个问题,不使用重定序器。我使用了PriorityBlockingQueueFactory,在比较器中我使用了类似的重定序器来骆驼:
<bean id="priorityQueueFactory"
class="org.apache.camel.component.seda.PriorityBlockingQueueFactory">
<property name="comparator">
<bean class="com.sg.sgf.service.queues.MyExchangeComparator" />
</property>
</bean>
然后,在路线中:
<route>
<from uri="seda:priority?queueFactory=#priorityQueueFactory&size=100&concurrentConsumers=5&pollTimeout=10000" />
<!-- <resequence>
<batch-config batchSize="300" batchTimeout="40000"
allowDuplicates="true" />
<simple>in.header.priority</simple> -->
<to uri="exec:cat" /> <!-- the actual executable is set in the job that is passed to the queue -->
<to uri="bean:batchjobMonitor" />
<to uri="log:output" />
<!-- </resequence> -->
</route>
有了这个,我就拥有了我想要的东西。