如何在不依赖Spring的情况下使用Apache Camel File-Watch功能
非Spring环境使用Apache Camel File-Watch组件实现方案
Apache Camel核心框架本身不强制绑定Spring,File-Watch组件同样支持在纯Java SE环境下独立运行,不需要引入任何Spring相关依赖。
依赖配置
如果使用Maven管理项目,只需要引入Camel核心依赖和File-Watch组件依赖即可,不需要额外引入camel-spring相关包:
<dependencies> <!-- Camel核心包 --> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-core</artifactId> <version>4.4.0</version> <!-- 可替换为实际使用的Camel版本 --> </dependency> <!-- File-Watch组件包 --> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-file-watch</artifactId> <version>4.4.0</version> </dependency> <!-- 可选:日志实现,用于运行时输出日志 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.0.12</version> </dependency> </dependencies>
最小实现示例
纯Java环境下直接通过DefaultCamelContext启动路由即可,不需要Spring容器托管:
import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; public class FileWatchStandaloneDemo { public static void main(String[] args) throws Exception { // 初始化Camel上下文,无Spring依赖 try (CamelContext context = new DefaultCamelContext()) { context.addRoutes(new RouteBuilder() { @Override public void configure() throws Exception { // 监听指定目录的文件创建、修改、删除事件 from("file-watch:/your/watch/path?" + "events=CREATE,MODIFY,DELETE" + "&recursive=true" + // 递归监听子目录 "&antInclude=*.txt,*.log") // 仅监听txt、log后缀文件 .log("捕获文件事件: ${header.CamelFileEventType},文件路径: ${header.CamelFileAbsolutePath}"); } }); // 启动Camel上下文 context.start(); // 阻塞主线程保持服务运行,可按需调整停止逻辑 Thread.currentThread().join(); } } }
核心配置说明
- 监听事件类型通过
events参数指定,支持CREATE/MODIFY/DELETE三种,多个事件用逗号分隔 recursive参数控制是否递归监听子目录,默认值为false- 可通过
antInclude/antExclude参数过滤需要监听的文件类型,支持Ant风格路径匹配 - 所有File-Watch组件的配置参数和Spring环境下完全一致,不存在功能差异
运行注意事项
- Windows、macOS、Linux系统下组件会自动适配底层文件系统事件通知机制,不需要额外配置
- 监听目录必须提前存在,否则启动时会抛出路径不存在异常,可提前手动创建或在路由启动前通过代码创建目标目录
- 生产环境使用时建议自定义异常处理逻辑,避免文件事件消费异常导致路由中断
内容的提问来源于stack exchange,提问作者Jason Mootoo
相关产品推荐
相关产品推荐

