Chr*_*orf 4 java apache-camel blocking file-copying
我想运行一个简单的Apache Camel示例,将文件从一个目录复制到另一个目录:
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure () throws Exception {
from("file://c:/fromdir/").to("file://c:/todir/");
}
});
context.start();
Run Code Online (Sandbox Code Playgroud)
如果我使用Apache Camel 2.0.0运行此示例,程序将立即退出context.start();并且不执行任何操作.如果我Thread.sleep(30000);在启动后添加CamelContext,后台线程会完成它们的工作,文件将从源复制到目标目录30秒.
但是,如果我使用Apache Camel 1.6.2运行相同的代码,该start()方法会自动阻止,我不需要将主线程置于休眠状态以便复制文件.我没有发现此行为从Camel 1.x更改为2.x的提示.这真的是预期的行为吗?是否可以让start()方法阻止Camel 2.0.0中的执行?
谢谢
eir*_*kma 10
或者你可以添加
Thread.currentThread().join();
Run Code Online (Sandbox Code Playgroud)
在context.start()之后;
是的,在camel上下文中调用start()应该永远不会阻塞线程.而这正是Camel 2.0的正确行为.
您可以使用org.apache.camel.util中的MainSupport类作为起始点,直到您点击ctrl + c或在CamelContext上调用stop().
参见例如Main in camel-spring,它扩展了MainSupport,并且能够从spring XML文件加载Camel.
| 归档时间: |
|
| 查看次数: |
6115 次 |
| 最近记录: |