我正在使用Apache Camel Spring Framework。我有一個組件FTP(從ftp獲取文件)和Bean(處理文件並將其存儲在數據庫中)。我所缺少的是當我處理這些文件並將其存儲在數據庫中時,我必須檢查插入或更新是否成功(這也起作用)。如果操作成功,我必須將文件移動到ftp上的另一個文件夾,如果不成功,我必須將其移動到ftp上的其他文件夾。在ftp上移動文件
所以我問是否有複製從位置迪拉該文件DIRB你需要知道
我正在使用Apache Camel Spring Framework。我有一個組件FTP(從ftp獲取文件)和Bean(處理文件並將其存儲在數據庫中)。我所缺少的是當我處理這些文件並將其存儲在數據庫中時,我必須檢查插入或更新是否成功(這也起作用)。如果操作成功,我必須將文件移動到ftp上的另一個文件夾,如果不成功,我必須將其移動到ftp上的其他文件夾。在ftp上移動文件
所以我問是否有複製從位置迪拉該文件DIRB你需要知道
一切簡單的辦法就是在這裏Apache Camel: File2 爲move
和moveFailed
搜索。
如果插入不成功,您可能會拋出一個CamelException。然後駱駝將文件移動到您指定的文件夾。
ftp://10.10.10.10/toRead?move=inDB&moveFailed=notInDB
由於我沒有你的代碼,我只是通過展示我將如何管理這樣的情況下回答:
根據豆的處理結果讓兩個獨立的路線。
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);
}
}
駱駝路線簡單。 FTP - > Bean。 Bean獲取消息(這是來自FTP的文件)並將其插入到數據庫中。我可以檢查插入是否成功,我只需要知道如何將文件從一個文件夾移動到另一個文件夾。例如:讀取文件位置__ftp://10.10.10.10/toRead/somefile.csv_ - >處理它並將其存儲在數據庫中 - >將它移動到__ftp://10.10.10.10/inDB/_(這是部分我失蹤了)。我認爲這是我能提供的最好解釋。我希望你能理解它 – Wolf
查看moveFailed選項 - http://camel.apache.org/file2 –