You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:05:17