在 Spring Integration 中如何防止两台不同的机器在同一个文件中工作?我知道nio library(javaSE) 提供了一种锁定 File FileLocker的机制,但是我如何使用 Spring Integration 来实现它?一个具体的例子将不胜感激。
问问题
540 次
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
共享持久性ConcurrentMetadataStore
:https ://docs.spring.io/spring-integration/docs/5.0.3.RELEASE/reference/html/files.html#file -阅读
于 2018-03-08T13:48:00.023 回答