我想要做的是提高路线的速度,这意味着我希望每秒执行更多的路线。
我可以在不同的线程上同时运行我正在运行的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,但我没有发现这对提高单一路线的速度非常有帮助。但是,当试图同时运行两条不同的路线时,它确实缩短了时间。
答案 0 :(得分:4)
你肯定做了一件坏事和奇怪的事情。
一些指针
如果您希望更多线程处理来自单个路由的消息,则可以将seda与并发使用者一起使用。