我想运行一个简单 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()之后;

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top