【发布时间】:2016-05-28 22:07:28
【问题描述】:
我需要处理放在特定文件夹中的任何文件。这些文件可以具有相同的名称。稍后它将由专有 bean 处理,该 bean 将根据文件名的重复状态重命名文件扩展名(如果文件之前从未处理过,则为 xxx.origin 或相反条件为 xxx.duplicate)。
基于这个需求,我决定使用file-inbound-channel-adapter,搭配spring-integration-3.0.8。我将prevent-duplicates 属性设置为false,所以我可以处理所有文件。但是,我发现 2 个file-inbound-channel-adapter 可以同时处理 1 个文件(即使第二个适配器是意外创建的——在上下文和 servlet 中初始化了两次)。但这对我来说是个问题,因为我实际上打算创建超过 1 个file-inbound-channel-adapter 来处理同一文件夹中的所有文件,我得到的结果是 1 个输入文件同时被 2 个 bean 处理两次,这得到了me 2 输出文件(xxx.origin 和 xxx.duplicate)。我也不能使用FileLocker,因为file-to-string-transformer由于文件的锁定状态而无法工作。
有什么方法可以达到要求吗?
【问题讨论】: