Apache Camel file组件是否支持从多个不同目录读取文件?
Apache Camel多目录读取文件方案说明
Apache Camel 官方的file组件不支持单个URI中配置多个完全独立的目录路径,你示例中把多个路径用逗号拼接在同一个<from>的uri属性中的写法无法生效。
推荐实现方式
针对你需要保留独立目录结构、不迁移文件的场景,有两种常用的落地方式:
1. 多endpoint入口配置(最简便)
为每个独立目录单独声明一个file类型的from节点,所有入口共用后续的处理逻辑即可,XML配置示例如下:
<!-- 三个独立目录的读取入口,可配置相同的文件处理参数 --> <from uri="file:///home/level1/level2/input?delay=1000&delete=true"/> <from uri="file:///dir1/test/folder1?delay=1000&delete=true"/> <from uri="file:///dir1/test/folder2?delay=1000&delete=true"/> <!-- 后续统一的处理逻辑 --> <to uri="xxx你的目标处理节点"/>
如果所有目录的读取参数完全一致,可通过Camel属性占位符复用配置,减少重复代码。
2. 动态轮询方案(适合目录动态变化场景)
如果你的待读取目录列表会动态调整,不想硬编码多个from节点,可以搭配pollEnrich组件实现:
- 先维护所有待读取的目录列表
- 定时触发遍历目录列表,通过
pollEnrich动态拉取对应目录下的文件
这种方式灵活性更高,但实现复杂度比第一种方案高,适合目录数量多、变动频繁的场景。
补充:如果所有待读取目录都属于同一个父目录,可直接配置
recursive=true搭配antInclude参数过滤目标子目录,但你当前的目录属于不同根路径,该方案不适用。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

