Spring SFTP入站chanel适配器删除本地文件
我已配置spring SFTP将文件从远程路径汇集到本地,处理一些作业,然后删除本地和远程文件。
下面的配置工作正常,除了本地文件删除,我没有找到任何删除本地文件的配置,比如delete-remote-files="true"
这里,当文件从远程传输到本地时,调用服务激活器。
如何在服务激活器完成作业时配置删除本地文件?
编辑:远程和本地的有效负载删除都通过以下更改解决:
在将消息发送到流后,入站适配器从不采取任何操作(自行); 它不知道有关下游流拓扑的任何信息 – 异步切换等。远程删除是在获取文件之后和发送消息之前完成的。
由于您已经在使用伪事务并在轮询器线程上执行所有操作,因此可以使用after-commit-expression
进行删除。
另一种技术是向最终使用者(在您的情况下为服务激活器)添加request-handler-advice
。 这在retry-and-more
示例应用程序中得到了certificate。
编辑:
回应您的评论如下; 不,用SpEL做两件事是不可能的 – 但是,你可以使用
并在postProcess
通道下游的流程中执行任何操作。
但是,我不清楚为什么要从filter中删除成功和失败的文件 – 您应该只使用AcceptAllFileListFilter
。
顺便说一下,我没有看到你的acceptOnceFilter
在这里被使用 – 你是否打算将它配置为local-filter
属性?