我们有一个 spring 集成应用程序,它在多个节点的集群中运行。NFS 驱动器安装在所有节点上,并且可供所有节点读取。
在 NFS 上,有一个文件夹正在被file:inbound-channel-adapter
所有节点监视,轮询间隔为 5 秒。
问题是 1)一个节点不应该拾取已被其他节点拾取的文件
2)如果一个文件被一个节点上的线程拾取,在轮询间隔之后运行的第二个线程不应该拾取它 - 我已经 AcceptOnceFileListFilter
为这个准备好了,但想知道是否有更好的方法。
我们已经看过的选项之一:
1)在数据库中创建一个具有唯一文件名的记录,并且每个其他节点在开始处理之前检查同一个数据库
还必须看看 NIOLocker - 但需要一些关于它的可靠性和在这种情况下可能的选项的输入。