CamelContext.start()不阻挡
-
12-09-2019 - |
题
我想运行一个简单 Apache的骆驼例子是将文件复制从一个目录到另一个:
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure () throws Exception {
from("file://c:/fromdir/").to("file://c:/todir/");
}
});
context.start();
如果我运行使用Apache骆驼2.0.0程序context.start();
后立即退出和什么也不做这个例子。如果我的Thread.sleep(30000);
起动之后添加CamelContext
,后台线程做他们的工作和文件从源到目标目录复制30秒。
但是,如果我运行使用Apache骆驼相同的代码自动1.6.2 start()
方法块,我并不需要把主线程设置,以获得复制的文件。我还没有找到一个暗示,这种行为从骆驼1.x的改变2.x的这真的是预期的行为?是否有可能让start()方法阻止执行在骆驼2.0.0?
由于
解决方案
是的呼叫开始()在骆驼上下文应该永远不会阻塞线程。和骆驼2.0。的这个正确的行为
可以使用MainSupport类从org.apache.camel.util为起点到已阻止,直到你击中CTRL + C或CamelContext调用stop()。
在一个延伸和MainSupport能够从弹簧XML文件加载骆驼的骆驼弹簧参见例如主
其他提示
或者你也可以添加
Thread.currentThread().join();
context.start()之后;
不隶属于 StackOverflow