有没有办法限制文件处理程序实例的数量?

时间:2019-03-06 13:09:17

标签: spring spring-integration

我有一个组件,该组件使用spring框架File集成在每次文件到达某个位置时启动一个进程。从日志文件中可以看到两个线程/进程/实例正在运行。有没有办法将其限制为一个?

第二个进程/线程似乎在第一个进程/线程之后几乎立即开始,并且它们相互干扰。第一个实例处理文件,但第二个实例尝试执行相同操作,并遇到filenotfound异常,因为第一个实例将其移动。

1 个答案:

答案 0 :(得分:0)

首先,您需要考虑使用fixedDelay而不是fixedRate为文件入站通道适配器配置轮询器。这样,下一个轮询任务就不会开始,直到上一个轮询任务结束为止。

还可以考虑使用某些filter不再处理同一文件。不知道您的用例是什么,但是简单的AcceptOnceFileListFilter就足够了。为了方便起见,通道适配器上有一个prevent-duplicates选项。

请参阅参考手册中的更多信息:https://docs.spring.io/spring-integration/docs/current/reference/html/#files

还有关于轮询器行为的信息:https://docs.spring.io/spring-integration/docs/current/reference/html/#channel-adapter-namespace-inbound