Apache camel 驼峰路由中直接vm的仅请求消息传递
我们如何异步处理直接vm 我有以下骆驼路线定义:Apache camel 驼峰路由中直接vm的仅请求消息传递,apache-camel,fuseesb,jbossfuse,Apache Camel,Fuseesb,Jbossfuse,我们如何异步处理直接vm 我有以下骆驼路线定义: <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:proc
<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>
当队列使用者使用线程DSL消费消息并发送到routeB并调用direct vm:timeTakingRoute
时,调用线程(即queueA
)仍在等待,直到使用线程DSL创建的线程完成
我们如何异步处理这个问题(调用者线程不应该等到使用线程DSL创建的线程完成)?直接组件设计为同步的 请尝试改用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>
您可以选择
seda
或vm
组件。
使用seda时,请注意队列仅在it上下文中可见。
如果要在CamelContext
之间进行交互通信,请使用vm
组件,它是seda
组件的扩展。
阅读更多内容:谢谢,我也这么认为。我看到了一张使DirectVM异步的票证。通过使用vm或seda,线程总是侦听请求并试图避免这种情况。谢谢,我也这么认为。我看到了一张使DirectVM异步的票证。通过使用vm或seda,线程总是侦听请求并试图避免这种情况。