2016-11-30 24 views
0

使用下面的代码创建骆驼路线,但是当在源中创建文件时,测试中不会出现任何影响。为什么?如何使用Apache Camel将文件插入输入文件夹后立即将文件移动到输出文件夹中?

public class DriverMain { 

    public static void main(String[] a) throws Exception { 
     CamelContext context = new DefaultCamelContext(); 
     context.addRoutes(new RouteBuilder() { 
      public void configure() { 
       from("file://source").to("file://test"); 
      } 
     }); 


     context.start(); 
     String path = System.getProperty("user.dir")+"\\source"; 
     File dir = new File(path); 
     File file = new File(path+"\\testfile.txt"); 
     file.createNewFile(); 
    } 

} 
+0

您还应该在最后停止上下文。添加一个context.stop()作为最后一行。另外,from()和to()从相对文件夹中读取。您确定您的应用在user.dir/source下运行? –

回答

0

骆驼定期轮询文件。您正在创建一个文件,但是立即结束应用程序,不会让骆驼轮询您的文件。默认情况下,Camel在开始轮询之前等待1000毫秒。您可以看到file2 component here的选项。

在此测试中,您需要在创建文件后添加Thread.sleep(2000)。或者更好的是,开始骆驼作为一个独立的过程,并在测试结束时将其杀死。您可以通过使用org.apache.camel.main.Main类来实现。有运行Camel standalone here的例子。