0

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

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

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

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

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

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

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

4

1 回答 1

0

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

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

于 2013-01-03T05:16:13.173 回答