0

我正在使用camel替换文件中的数据(它是400 MB的大文件),即使文件正在使用(它处于写入模式),我也面临其他消费者拾取文件的问题。

骆驼有没有办法锁定处于写入模式的文件,这样另一个消费者/路线就不能消费了。它应该在写入完成后消耗。我尝试使用 readLocks 但到目前为止没有运气。

from("file://A").split().tokenize("\n", 999).streaming()
.log("Spliting::::::::::").unmarshal(csv).bean("transferDate", "enrich")
.marshal(csv).to("file://B?fileExist=Append");

from("file://B?delete=true").to("file://A"); // this route pick up file even the first route haven't finished writing file completely
4

1 回答 1

1

您可以使用完成的文件。如果您在文件使用者上配置它们,它会忽略所有文件,直到在真实文件旁边有一个完成(或标记)文件。

您还可以配置文件生产者来创建完成的文件。

请参阅Camel Docs for File 组件并完成章节Using done files

于 2018-05-11T10:39:41.180 回答