所以,我正在尝试学习Apache Camel,他们在骆驼行动书中提供的Hello World示例如下:
public class FileCopierWithCamel {
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("file:data/inbox?noop=true").to("file:data/outbox");
}
});
context.start();
Thread.sleep(10000);
context.stop();
}}
本示例尝试将所有文件从一个文件夹复制到另一个文件夹。
他们说它的行数较少,并称赞它与长 Java 版本相比有多好,这实际上比他们使用 Camel 提出的解决方案效果更好。
我这样说是因为这个提议的解决方案遇到了一个巨大的问题:它有一个等待。假设我想复制 1000 个文件 - 甚至更好 - 我不完全知道文件夹中的文件数量(在大多数情况下会发生这种情况)。使用此解决方案,我实际上必须猜测操作需要多长时间。这不仅已经是一个糟糕的开始,而且毫无意义。我是一名计算机工程师,而不是先知。
如何将此示例修改为仅在复制所有文件时停止?
还有另一种运行简单驼峰代码的方法,一种不需要sleep()
的方法。
您可以简单地像这样重写您的示例:
public class FileCopierWithCamel2 {
public static void main(String[] args) throws Exception {
Main camelMain = new Main();
camelMain.addRouteBuilder(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file:data/inbox?noop=true").to("file:data/outbox");
}
});
camelMain.run();
}
}
希望这对;)有所帮助