Apache camel 驼峰路由中直接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

我们如何异步处理直接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: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,线程总是侦听请求并试图避免这种情况。