2
我想要做的是提高路線的速度,這意味着我想實現更多的路線每秒執行。我怎樣才能使Apache Camel路線更快?
我可以在單獨的線程上同時運行我正在運行的100條路線中的一些嗎?如果是這樣,我該怎麼做?
我運行這樣一個簡單的路線和收集的開始和結束主循環時間:
import java.util.Calendar;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
public class TestAdviceRoute extends AdviceWithRouteBuilder {
@Override
public void configure() throws Exception {
from("direct:start")
.routeId("Doug")
.process(new PrintProcessor())
.end()
;
}
}
@SuppressWarnings("deprecation")
public static void main(String[] args) throws Exception{
CamelContext context = new DefaultCamelContext();
System.out.println("Start Time:" + Calendar.getInstance().getTime());
for (int i = 0; i < 100; i++) {
context.addRoutes(new TestAdviceRoute());
context.getRouteDefinition("Doug").adviceWith(context, new WrapRoute());
context.createProducerTemplate().sendBody("direct:start", "Doug");
context.stop();
}
System.out.println("End Time:" + Calendar.getInstance().getTime());
}
}
注:我已經簽出Apache Camel - AsyncProcessing,但我不覺得這非常有助於提高單一路線的速度。然而,當試圖同時運行兩條不同的路線時,它確實減少了時間。
這個問題是waaay開放式結束。擁有多條路線將消耗多個資源。你需要做的是分析你的路線,看看大部分時間花在哪裏,然後應用縮放技術。例如,使用線程池通過拆分器EIP拆分和流式傳輸大型CSV文件。這是過早的優化。 – Namphibian
http://camel.apache.org/seda.html – vikingsteve