Spring Integration:prevent 在多节点环境中重复

Spring Integration:prevent duplicates in multi node environment

我有一个由入站适配器轮询的文件。 在环境方面,我有多个节点轮询位于 NAS 位置(对所有人可见)的单个文件并防止重复是真的。

令人惊讶的是,如果我重复放置一个文件,none 个节点会选择该文件,直到服务器重新启动。

假设 spring 集成用于将此信息保存在 spring 上下文中,如果有一个节点遗漏了,这应该已被其他节点选择。

有人可以解释一下这个标志或元数据的维护位置吗?

参见 the documentation。您需要一个 FileSystemPersistentAcceptOnceFileListFilter 和一个共享的 MetadataStore

默认使用基于内存的AcceptOnceFileListFilter,不考虑文件修改时间。

The AcceptOnceFileListFilter stores its state in memory. If you wish the state to survive a system restart, consider using the FileSystemPersistentAcceptOnceFileListFilter instead. This filter stores the accepted file names in a MetadataStore implementation (Section 9.5, “Metadata Store”). This filter matches on the filename and modified time.