使用通用 FS 跨多个节点锁定文件



我们有一个 Spring 集成应用程序,它在多个节点上的集群中运行。NFS 驱动器安装在所有节点上,并且所有节点都可以读取。

在 NFS 上,有一个文件夹正在被所有节点中的file:inbound-channel-adapter监视,轮询间隔为 5 秒。

问题是1)一个节点不应该拾取已被另一个节点拾取的文件

2)如果一个节点上的线程拾取文件,则在轮询间隔后运行的第二个线程不应拾取它 - 我已经为这个 AcceptOnceFileListFilter ,但想知道是否有更好的方法。

我们已经看过的选项之一:

1) 在数据库中创建一个具有唯一文件名的记录,并且在开始处理之前每隔一个节点检查同一个数据库

必须查看NIOLocker - 但需要一些关于其可靠性和在这种情况下可能选项的输入。

您是否尝试过在文件被接受后重命名文件? 也就是说,您要做的第一件事是将文件重命名为 file.txt.lck,这意味着其他节点将不再发现它符合其筛选条件。

如果一个节点发生故障,该文件可以由另一个节点手动还原和处理

相关内容

  • 没有找到相关文章

最新更新