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
在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