如何确保仅一台服务器读取 CAMEL 文件?
How make sure that CAMEL-file is read by only one server?
我正在使用 camel-jcifs 并读取一个文件。一切正常。
该应用程序将部署在四个服务器实例上。
现在我的问题是如何确保一次只有一台服务器提取文件?
<from id="_from_pop3" uri="smb://myurl?fileName=filename&preMove=inprogress&move=processed"/>
我得到建议使用 infinispan 并将正在处理的文件写入共享缓存。
有人可以提出其他可能的解决方案吗?
此致,
萨拉达.
是的,您需要使用集群路由模式。您可以在 Camel in Action 第 2 版书中找到有关此内容的详细信息,第 17 章:https://www.manning.com/books/camel-in-action-second-edition
由于 camel-jcifs 扩展了文件组件,您可以查看在线关于 Apache Camel 中的集群文件路由的解决方案,并使用类似的解决方案。比如readLockIdempotent
选项(书上有例子)
可以尝试使用 file/ftp 中的 premove 选项在服务器找到文件后移动文件,这将从其他服务器隐藏文件,并且默认情况下它会获得锁定,因此其他服务器无法访问,即使两者都在同一纳秒内尝试。
我正在使用 camel-jcifs 并读取一个文件。一切正常。 该应用程序将部署在四个服务器实例上。 现在我的问题是如何确保一次只有一台服务器提取文件?
<from id="_from_pop3" uri="smb://myurl?fileName=filename&preMove=inprogress&move=processed"/>
我得到建议使用 infinispan 并将正在处理的文件写入共享缓存。
有人可以提出其他可能的解决方案吗?
此致, 萨拉达.
是的,您需要使用集群路由模式。您可以在 Camel in Action 第 2 版书中找到有关此内容的详细信息,第 17 章:https://www.manning.com/books/camel-in-action-second-edition
由于 camel-jcifs 扩展了文件组件,您可以查看在线关于 Apache Camel 中的集群文件路由的解决方案,并使用类似的解决方案。比如readLockIdempotent
选项(书上有例子)
可以尝试使用 file/ftp 中的 premove 选项在服务器找到文件后移动文件,这将从其他服务器隐藏文件,并且默认情况下它会获得锁定,因此其他服务器无法访问,即使两者都在同一纳秒内尝试。