使用spring poller在server1或server2中没有发生文件锁定

问题描述 投票:0回答:1

我在我的应用程序中实现了spring poller。我的应用程序运行在两个服务器我将txt / pdf / xlsx文件放在入站文件夹中。两个服务器指向相同的入站文件夹。一旦我放置了多个文件,如10-15个文件,两个服务器(两个JVM)都试图选择相同的文件,一个服务器处理文件并将文件从入站移动到进程中,当其他服务器尝试相同时抛出FileNotFoundException。

有没有办法锁定文件,以便其他服务器可能无法读取同一个文件? (或)是否有任何其他解决方案来解决此问题。

提前致谢。

spring-integration
1个回答
0
投票

<int-file:inbound-channel-adapter>可以提供<locker>子元素。见Reference Manual

当多个进程从同一目录读取时,可能需要锁定文件以防止它们被同时拾取。要做到这一点,你可以使用FileLocker。有一个基于java.nio的实现开箱即用,但也可以实现自己的锁定方案。 nio储物柜可按如下方式注入

<int-file:inbound-channel-adapter id="filesIn"
    directory="file:${input.directory}" prevent-duplicates="true">
    <int-file:nio-locker/>
</int-file:inbound-channel-adapter>
© www.soinside.com 2019 - 2024. All rights reserved.