0

我们有一个 spring 集成应用程序,它将监视传入的文件夹然后处理文件。我正在使用 prevent-duplicates="true" 但我必须更改为 false。这里我解释了原因。 文件入站通道适配器性能问题

现在我看到多个线程处理同一个文件。我感谢帮助!

<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" />

谢谢,莫汉

4

1 回答 1

0

正如您所发现的,当文件系统有大量文件时,很难进行扩展。

您可能需要考虑替代技术、Rabbit、JMS 等。

或者,您可以按照此处所述实现自定义文件锁定器或目录扫描器。

提供的 nio-locker 无济于事,因为在这种情况下它不会阻止多线程访问。

于 2013-11-20T20:05:15.303 回答