1

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

4

1 回答 1

2

确实有一个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>

更多信息在参考手册中。

在不同的 JVM 中避免并发访问和重复的另一种选择就像使用FileSystemPersistentAcceptOnceFileListFilter共享持久性ConcurrentMetadataStorehttps ://docs.spring.io/spring-integration/docs/5.0.3.RELEASE/reference/html/files.html#file -阅读

于 2018-03-08T13:48:00.023 回答