我在 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/