如何确保只有一台服务器读取CAMEL文件?

时间:2017-10-18 23:58:43

标签: apache-camel camel-ftp

我使用camel-jcifs并读取文件。一切都很好。 该应用程序将部署在四个服务器实例上。 现在我的查询是如何确保一次只有一个服务器获取文件?

 <from id="_from_pop3" uri="smb://myurl?fileName=filename&amp;preMove=inprogress&amp;move=processed"/>

我建议使用infinispan并写入正在进行的文件的共享缓存。

有人可以建议其他可能的解决方案吗?

此致 Sarada。

2 个答案:

答案 0 :(得分:0)

是的,您需要使用聚集路由模式。您可以在Camel in Action第2版书籍第17章中找到有关此内容的详细信息:https://www.manning.com/books/camel-in-action-second-edition

由于camel-jcifs扩展了文件组件,您可以在线查看有关Apache Camel中的集群文件路由的解决方案,并使用类似的解决方案。例如readLockIdempotent选项(书中有一个例子)。

答案 1 :(得分:0)

可以尝试在文件/ ftp中使用premove选项来移动文件,一旦服务器找到该文件,这将隐藏其他服务器上的文件,并且默认情况下它也会获得锁定,这样即使两个服务器同时尝试也无法访问纳秒。