Spring 集成文件支持

Spring Integration File Support

在Spring集成中如何防止两台不同的机器在同一个文件中工作?我知道 nio library(javaSE) 提供了一种机制来锁定文件 FileLocker 但我如何使用 Spring 集成来实现它? 一个具体的例子将不胜感激。

确实有一个 org.springframework.integration.file.locking.NioFileLocker 实现可用于 FileReadingMessageSource 选项,例如:

/**
 * Optional. Sets a {@link FileLocker} to be used to guard files against
 * duplicate processing.
 * <p>
 * <b>The supplied FileLocker must be thread safe</b>
 * @param locker a locker
 */
public void setLocker(FileLocker locker) {

从XML的角度来看是这样的:

<file:inbound-channel-adapter>
    <file:nio-locker/>
</file:inbound-channel-adapter>

更多信息在 Reference Manual

另一种避免在不同 JVM 中并发访问和重复的选项是将 FileSystemPersistentAcceptOnceFileListFilter 与共享持久性 ConcurrentMetadataStore 一起使用:https://docs.spring.io/spring-integration/docs/5.0.3.RELEASE/reference/html/files.html#file-reading