spring - 有没有办法限制文件处理程序实例的数量?
问题描述
我有一个组件,它使用 spring 框架文件集成在每次文件到达某个位置时启动一个进程。我可以从日志文件中看到两个线程/进程/实例正在运行。有没有办法将其限制为一个?
第二个进程/线程似乎在第一个进程/线程之后几乎立即启动,并且它们相互干扰。第一个实例处理文件,但随后第二个实例尝试执行相同操作并遇到 filenotfound 异常,因为第一个实例移动了它。
解决方案
首先,您需要考虑为文件入站通道适配器配置轮询器,fixedDelay
而不是fixedRate
. 这样,下一个轮询任务将在前一个轮询结束之前开始。
还要考虑使用一些filter
不再处理同一个文件。不确定您的用例是什么,但简单AcceptOnceFileListFilter
就足够了。为方便起见,通道适配器上有一个prevent-duplicates
选项。
在参考手册中查看更多信息:https ://docs.spring.io/spring-integration/docs/current/reference/html/#files
推荐阅读
- authorization - Quarkus 自定义授权拦截器
- c - 如何使用一种简单的方法来确定异步 GRPC++ 中客户端流式传输的结束?
- javascript - 在 cypress 中管理多个站点
- php - 为什么我使用 PHP 的 $_SERVER 变量得到一个随机字符串作为 IP 地址?
- javascript - 如何使用Javascript添加n个值
- php - htacess 重写规则给出 500 内部服务器错误
- azure-active-directory - 向 Microsoft Graph App 添加权限将如何影响现有用户?
- python - 如果太长,是否可以剪切长变量名?
- amazon-web-services - 如何在 AWS Elastic Container Service 中使用现有的 docker-compose.yml 文件?
- fonts - 如何根据 DeJaVu 制作自定义字体?