据我所知,Camel中的servlet和jetty端点都是Request Reply消息交换(InOut)期望out-message。
因此,我假设当我向这些端点发送HTTP请求时,只有在路由的所有处理器完成后才会发回响应。
是否有可能以一种即发即忘的方式调用这些端点,即只是触发路由并立即获得响应,而无需等待所有处理完成?
答案 0 :(得分:0)
当然,您只需在路线中添加一些asynchronous步骤(EIP或组件)......
例如......这条路由会将所有请求发送到JMS队列(或seda等),这些队列可以异步处理,并在消息进入队列后发送回HTTP客户端...
from("http://localhost:9001/inbound")
.to("activemq:inboundQ");
from("activemq:inboundQ")
.to(...inbound processing...);
答案 1 :(得分:0)
最后我使用了" seda"使其异步。请注意,当我使用inOnly-tag时,这只会运行异步:
<route autoStartup="true" id="x-service">
<from uri="servlet:/xService"/>
<inOnly uri="seda:x-service-execute-async" />
<transform>
<constant>OK</constant>
</transform>
</route>
<route autoStartup="true" id="x-service-execute-async">
<from uri="seda:x-service-execute-async"/>
...
</route>