在camel中写入并发文件时数据丢失

时间:2015-05-31 17:14:32

标签: apache-camel

我正在使用camel技术进行文件操作。我的系统是集群环境。

Let say,  I have 4 instances  
Instance A 
Instance B 
Instance C 
Instance D

文件夹结构

输入文件夹:C:/ app / input

输出文件夹:C:/ app / output

所有四个实例都将指向Input文件夹位置。按照,我的业务8个文件将被放置在输入文件夹中,输出将是合并文件。这里骆驼在同时写入输出文件时丢失了数据。

路线:

 from("file://C:/app/input")
 .setHeader(Exchange.File_Name,simple("output.txt"))
 .to("file://C:/app/output?fileExist=Append")
 .end();

请帮我解决这个问题。有没有像骆驼写锁?避免并发文件编写器。提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用文件组件的doneFile选项,有关详细信息,请参阅http://camel.apache.org/file2.html

避免读取当前由其他应用程序编写的文件

注意JDK文件IO API在检测另一个应用程序当前是否正在写入/复制文件方面有点受限。并且实现可以根据OS平台而不同。这可能导致Camel认为该文件未被其他进程锁定并开始使用它。因此,您必须自己调查适合您环境的套件。为了帮助解决这个问题,Camel提供了可以使用的不同readLock选项和doneFileName选项。另请参阅“从其他人直接删除文件的文件夹中使用文件”一节。