在Camel in Action中可怕的Hello world Camel示例(帮助解决它!)

时间:2014-04-04 12:33:37

标签: java file apache-camel

所以,我正在尝试学习Apache Camel,他们在Camel in action book中提供的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个文件 - 甚至更好 - 我不完全知道文件夹中的文件数量(大多数情况下会发生这种情况)。使用此解决方案,我实际上必须猜测操作将花费多长时间。这不仅是一个糟糕的开始,也没有任何意义。我是一名计算机工程师,而不是先知。

如何将此示例修改为仅在复制所有文件时停止?

1 个答案:

答案 0 :(得分:2)

有另一种方法可以运行简单的驼峰代码,不需要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();
    }
}

希望这会有所帮助;)