開始,明確地配置您的路線,從隊列中消耗了單個消費者...
無論是全球範圍內爲所有連接
<bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="pooledConnectionFactory"/>
<property name="concurrentConsumers" value="1"/>
<property name="maxConcurrentConsumers" value="1"/>
</bean>
或明確每個路由/消費者
那麼,你有幾個選擇。一般來說,您可以使用管道模式在單個路由中的步驟之間(同步)傳遞消息。或者使用camel-direct在多個路由之間提供同步消息流。
from("activemq:queue:input?concurrentConsumers=1&maxConcurrentConcumers=1")
.to(<step1>)
.to(<step2>)
...
,或者如果你的步驟需要多條路線,然後使用直接連接它們...
from("activemq:queue:input?concurrentConsumers=1&maxConcurrentConsumers=1")
.to("direct:step1");
from("direct:step1")
//perform step1 processing
.to(direct:step2");
from("direct:step2")
//perform step2 processing
.to(direct:step3");
...
所以它必須對消費者是從每一次讀取隊列中添加?沒有辦法爲代理控制中的所有隊列配置此功能? – Derek 2012-04-03 17:55:35
這也可以在全球範圍內完成...我相應地更新了答案 – 2012-04-03 19:36:50
在代理上設置async和dispatchAsync選項如何?是直通處理所必需的,我可以使用TCP傳輸嗎? – Derek 2012-04-04 18:35:15