我在我的应用程序中实现了弹出轮询器。我的应用程序运行在两个服务器我将txt / pdf / xlsx文件放在入站文件夹中。两个服务器指向相同的入站文件夹。一旦我放置了多个文件,如10-15个文件,两个服务器(两个JVM)都试图选择相同的文件,一个服务器处理文件并将文件从入站移动到进程中& 当其他服务器尝试相同并抛出FileNotFoundException 时。
有没有办法锁定文件,以便其他服务器可能无法读取同一个文件? (或)是否有任何其他解决方案来解决此问题。
提前致谢。
答案 0 :(得分: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>