Apache Camel处理文件后自动删除?如何避免该问题
Apache Camel处理文件后避免文件消失的解决方案
你当前的代码中虽然配置了delete(false),但文件处理后从原目录消失,是因为Camel File组件的默认行为是将处理后的文件移动到输入目录下的.camel子目录,并非真正删除。要让文件留在原目录,可通过以下两种方式调整配置:
方案1:允许重复处理文件,保留在原目录
添加move("")配置禁用文件移动操作,这样处理后的文件会一直留在原目录,后续Camel还会重复扫描处理:
public void configure() { from( file(inputDirectory) .initialDelay(initialDelay) .delete(false) // 此为默认值,可省略 .antInclude("*.pdf") .readLock("markerFile") .readLockDeleteOrphanLockFiles(false) .maxMessagesPerPoll(500) .move("") // 关键配置:禁用文件移动到.camel目录 ) .routeId("signaturcheck") .throttle(8).timePeriodMillis(100) .process(checkFile) .log("File handled ${file:name}") .stop(); }
方案2:仅处理一次文件,保留在原目录
如果只需要处理文件一次,可使用noop(true)配置,该选项会让Camel不移动/删除文件,同时记录已处理文件避免重复扫描:
public void configure() { from( file(inputDirectory) .initialDelay(initialDelay) .antInclude("*.pdf") .readLock("markerFile") .readLockDeleteOrphanLockFiles(false) .maxMessagesPerPoll(500) .noop(true) // 仅处理一次,不修改文件位置 ) .routeId("signaturcheck") .throttle(8).timePeriodMillis(100) .process(checkFile) .log("File handled ${file:name}") .stop(); }
内容的提问来源于stack exchange,提问作者user2023141
相关产品推荐
相关产品推荐

