我们有一个spring集成应用程序,它将监视传入的文件夹,然后处理文件。我使用的是prevent-duplicates =“true”,但我必须改为false。 我在这里解释了原因。 file inbound-channel-adapter performance issue
现在我看到多个线程正在处理同一个文件。我感谢你的帮助!
<file:inbound-channel-adapter id="inFiles" channel="inFilesin" directory="file:${incoming.folder}"
queue-size="300" filename-regex="(?i)^(?!.*writing)" prevent-duplicates="false" auto-startup="true" auto-create-directory="false" >
<int:poller id="fw.fileInboudPoller" fixed-rate="1" receive-timeout="3" time-unit="SECONDS"
max-messages-per-poll="10" task-executor="taskExecutor" />
</file:inbound-channel-adapter>
<task:executor id="taskExecutor" pool-size="10-20" queue-capacity="20" rejection-policy="CALLER_RUNS" />
谢谢, 莫汉
答案 0 :(得分:0)
正如您所发现的,当文件系统包含大量文件时,缩放很困难。
您可能想要考虑替代技术,Rabbit,JMS等。
或者,您可以将自定义文件锁定器或目录扫描程序实现为described here。
提供的nio-locker无济于事,因为在这种情况下它不会阻止多线程访问。