我正在使用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();
请帮我解决这个问题。有没有像骆驼写锁?避免并发文件编写器。提前致谢
答案 0 :(得分:0)
您可以使用文件组件的doneFile选项,有关详细信息,请参阅http://camel.apache.org/file2.html。
避免读取当前由其他应用程序编写的文件
注意JDK文件IO API在检测另一个应用程序当前是否正在写入/复制文件方面有点受限。并且实现可以根据OS平台而不同。这可能导致Camel认为该文件未被其他进程锁定并开始使用它。因此,您必须自己调查适合您环境的套件。为了帮助解决这个问题,Camel提供了可以使用的不同readLock选项和doneFileName选项。另请参阅“从其他人直接删除文件的文件夹中使用文件”一节。