我对骆驼路由及其两个端点有点困惑:Direct和Seda。好吧,让我们说,我有这样的路线:这条线路回到基础:Apache骆驼路由和直接组件
public void configure()
{
from("direct:services")
.process(//Some processing here)
.to("http://ThirdPartyServers")
}
在此我有一个接收几个请求REST Web服务,上面做了一些处理,然后双手在消息得到一些第三响应派对服务器。我已经实例化骆驼上下文通过Spring框架是这样的:
<camelContext id="appCamelContext" xmlns="http://camel.apache.org/schema/spring"
trace="true" streamCache="true">
<propertyPlaceholder id="properties"
location="classpath:camel.properties" />
<camel:routeBuilder ref="oneRouteBuilder" />
<camel:routeBuilder ref="photosRouteBuilder" />
</camelContext>
现在的问题是,在一个瞬间我发送多个不同的消息,这条路线。现在骆驼文档说直接组件是在单线程中调用的并且是同步的。那么所有的信息会被同时处理还是一个接一个的处理呢?
此外,如果我改变直接组件seda,它会有什么区别?
TIA
更新[皮特的回答后]: 虽然皮特的回答澄清,但我有一个关于同一个直接和塞达组件新的疑问。比方说,现在我的路线是这样的:
public void configure(){
from("direct:services")
.choice()
.when("some predicate here-Predicate1")
.to("seda:predicate1")
.otherwise()
.to("seda:fallback")
.end();
from("seda:predicate1")
.process("some processing")
.to("http://ThirdPartyServers");
from("seda:fallback")
.process("some processing")
.to("jms:fallbackqueue");
}
现在,如果我发送5封邮件到直流分量从不同的线程,所以这些消息将被同时处理。正如你在上面的路由中看到的,直接组件将消息发送到seda组件。那么现在只有一个seda组件的线程可以处理所有不同的5个消息?最终意味着所有的消息将被逐一处理?
在骆驼邮件列表中提问时也有这个问题:http://camel.465427.n5.nabble.com/Back-to-Basics-Apache-Camel-Routes-and-Direct-Component-td5731899.html – Sikorski 2013-05-02 09:41:19