我们如何异步处理direct-vm?
我有以下Camel路线定义:
<route id="routeA">
<from uri="activemq:queue:queueA" />
<to uri="direct-vm:someProcessing" />
<to uri="direct-vm:processAsync" />
</route>
<route id="routeB">
<from uri="direct-vm:processAsync">
<threads executorServiceRef="someRef">
<inOnly uri="direct-vm:timeTakingRoute" />
<threads>
<route>
当队列使用者使用消息并发送到routeB并使用线程DSL调用direct-vm:timeTakingRoute
时,queueA
的调用者线程仍然等待,直到使用线程DSL创建的线程完成。
我们如何异步处理它(调用者线程不应该等到使用线程DSL创建的线程完成)?
答案 0 :(得分:3)
直接组件设计为同步http://camel.apache.org/direct-vm.html
请尝试改为使用 seda :
<route id="routeA">
<from uri="activemq:queue:queueA" />
<to uri="direct-vm:someProcessing" />
<inOnly uri="seda:processAsync" />
</route>
<route id="routeB">
<from uri="seda:processAsync" />
<to uri="direct-vm:timeTakingRoute" />
</route>
答案 1 :(得分:1)