java - 如何使用apachecamel仅删除ftp服务器上已处理的文件

标签 java filter apache-camel builder

我在 Camel 中声明了以下路线:

from(eodRepository + "?delete=true")
    .filter(header("CamelFileName").regex(myPattern))
    .log(DEBUG, "Decrypting file ${header.CamelFileName}")
    .unmarshal(pgpDataFormat)
    .log(DEBUG, "Processing file ${header.CamelFileName}")
    .unmarshal(myBusinessDataFormat)
    .bean(myBean, "processIt")
    .log(INFO, "Processed file ${header.CamelFileName}");

上面使用与 eodRepository(一个 sftp 文件夹)中的过滤器匹配的文件,但是端点上的 delete=true 会删除 sftp 文件夹中的所有文件,而不仅仅是已处理的文件。

有谁知道如何确保仅删除已处理的文件,并将其余文件保留在端点上?

最佳答案

您需要在端点uri中指定文件名过滤,而不是在路由中指定过滤器EIP。

您可以使用使用 reg exp 的 include 选项:

"?delete=true&include=" + pattern

FTP 文档:https://github.com/apache/camel/blob/master/components/camel-ftp/src/main/docs/ftp-component.adoc

关于java - 如何使用apachecamel仅删除ftp服务器上已处理的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41859133/

相关文章:

java - elasticsearch Java API 中的多个平均聚合

java - 返回具有最高值的 XML 元素

java - 如何进行设置,以便在单击按钮时,数字选择器中的值会发生变化,反之亦然?

matlab - 音频信号滤波器设计

php - 基本的 MySQL/PHP 过滤

java - 对象的 ArrayList 与 HashMap 的 Arraylist

apache-spark - pyspark 数据框过滤器或基于列表包含

spring - Camel动态构建处理器bean调用

java - 如何在 Apache Camel 2.12 中重新加载属性文件?

java - 使用 Splitter 并行处理的 Camel route 的事务