我對駱駝路由及其兩個端點有點困惑: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