2015-07-22 57 views
1

我正在使用Apache Camel Spring Framework。我有一個組件FTP(從ftp獲取文件)和Bean(處理文件並將其存儲在數據庫中)。我所缺少的是當我處理這些文件並將其存儲在數據庫中時,我必須檢查插入或更新是否成功(這也起作用)。如果操作成功,我必須將文件移動到ftp上的另一個文件夾,如果不成功,我必須將其移動到ftp上的其他文件夾。在ftp上移動文件

所以我問是否有複製從位置迪拉該文件DIRB你需要知道

+0

駱駝路線簡單。 FTP - > Bean。 Bean獲取消息(這是來自FTP的文件)並將其插入到數據庫中。我可以檢查插入是否成功,我只需要知道如何將文件從一個文件夾移動到另一個文件夾。例如:讀取文件位置__ftp://10.10.10.10/toRead/somefile.csv_ - >處理它並將其存儲在數據庫中 - >將它移動到__ftp://10.10.10.10/inDB/_(這是部分我失蹤了)。我認爲這是我能提供的最好解釋。我希望你能理解它 – Wolf

+1

查看moveFailed選項 - http://camel.apache.org/file2 –

回答

1

一切簡單的辦法就是在這裏Apache Camel: File2movemoveFailed搜索。

如果插入不成功,您可能會拋出一個CamelException。然後駱駝將文件移動到您指定的文件夾。

ftp://10.10.10.10/toRead?move=inDB&moveFailed=notInDB 
0

由於我沒有你的代碼,我只是通過展示我將如何管理這樣的情況下回答:

根據豆的處理結果讓兩個獨立的路線。

from("{{your.ftp.source}}") 
    .bean(new ProcessAndStoreFileBean()) 
    .choice() 
     .when(property("fileProcessingResult").equalsTo(true)) 
      .to("ftp://yourserver/Destination/Folder/Success") 
     .otherwise() 
      .to("ftp://yourserver/Destination/Folder/Failure") 
    .end(); 

,並在Bean方法我只想讓:

class ProcessAndStoreFileBean { 

    @Handler 
    public void processAndSaveInDb(Exchange exchange){ 

     // many line to do the job... 

     if(success) 
      exchange.setProperty("fileProcessingResult", true); 
     else{ 
      exchange.setProperty("fileProcessingResult", false); 
    } 
}