2015-02-09 46 views
0

我想要在Java中編程一個不斷檢查文件夾文件夾的Camel Route,然後將它們發送給處理器。Apache-Camel中的文件監聽器

我不知道它的方式似乎很「髒」我說:

from("file:C:\\exampleSource").process(new Processor() 
       { 
        @Override 
        public void process(Exchange msg) 
        { 
         File file = msg.getIn().getBody(File.class); 
         Filecheck(file); 
        } 
       }); 

      } 
     }); 
     camelContext.start(); 
     while (true) 
     { 
      // run 
     } 

是否有實現一個更好的辦法?

在此先感謝。

+0

這個應用程序將如何部署?威爾將作爲獨立的JAR運行,還是將其部署到像卡拉夫這樣的運行時間? – Namphibian 2015-02-09 19:40:24

回答

1

您還可以將你的文件處理專用類:

import java.io.File; 
import org.apache.camel.Exchange; 
import org.apache.camel.Processor; 

public class FileProcessor implements Processor { 

    @Override 
    public void process(Exchange exchange) throws Exception { 
     File file = exchange.getIn().getBody(File.class); 
     processFile(file); 
    } 

    private void processFile(File file) { 
     //TODO process file 
    } 
} 

,然後用它如下:

from("file:C:\\exampleSource").process(new FileProcessor()); 

看看可用的駱駝maven原型:http://camel.apache.org/camel-maven-archetypes.html其中c amel-archetype-java反映你的情況

+0

謝謝!問題是,我必須開始camelroute,如果我不用無限循環工作,路線會立即停止。 – HAG 2015-02-09 16:35:24

+0

請大家看看這個:[運行駱駝獨立,並保持運行](http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html) – cslysy 2015-02-10 10:00:48

+0

非常感謝你許多! – HAG 2015-02-10 10:42:16

0

這裏是做一個也許更清潔的方式:

public static void main(String[] args) throws Exception { 
    Main camelMain = new Main(); 
    camelMain.addRouteBuilder(new RouteBuilder() { 
     @Override 
     public void configure() throws Exception { 
      from("file:C:\\xyz") 
        // do whatever 
      ; 
     } 
    }); 
    camelMain.run(); 
} 
+0

這裏的問題是一樣的。我必須使用無限循環來保持路線運行。 – HAG 2015-02-09 16:35:56