大佬教程收集整理的这篇文章主要介绍了Spring SFTP入站chanel适配器删除本地文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
消息发送到流之后,入站适配器永远不会采取任何操作(自行执行)。它不了解有关下游流拓扑的任何信息-异步切换等。在删除文件之后和发送消息之前完成远程删除。
由于您已经在使用伪事务,并且在轮询程序线程上进行了所有操作,因此可以使用进行删除after-commit-Expression
。
另一种技术是将a添加request-handler-advice
到最终使用者(在您的情况下为服务激活器)。这证明在该retry-and-
more
示例应用程序。
回应您在下面的评论;否,使用SpEL不可能做两件事-但是,您可以使用
<int:after-commit Expression="payload" chAnnel="postProcess"/>
并在postProcess
通道下游进行所需的操作。
但是,对于我来说,尚不清楚为什么要从过滤器中删除文件以获取成功和失败的信息-您应该只使用一个AcceptAllfileListFilter
。
顺便说一句,我看不到您acceptOnceFilter
在这里的任何地方使用过-您是否打算将其配置为local-filter
属性?
我已经配置了spring SFTP以将文件从远程路径集中到本地,以处理一些作业,然后同时删除本地和远程文件。
下面的配置工作正常,除了删除本地文件外,我没有找到任何配置来删除本地文件,例如 delete-remote-files="true"
<bean id="sftpSessionFactory"
class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory"
p:host="${sftp.host}"
p:port="${sftp.port}"
p:user="${sftp.usernamE}"
p:password="${sftp.passworD}"
p:allowUnknownKeys="${sftp.allowUnknownKeys}" />
<int:chAnnel id="sftpChAnnel">
<int:queue />
</int:chAnnel>
<int-sftp:inbound-chAnnel-adapter
id="sftpInboundAdapter"
chAnnel="sftpChAnnel"
session-factory="sftpSessionFactory"
remote-directory="${sftp.remotedir}"
local-directory="${sftp.localdir}"
auto-create-local-directory="true"
delete-remote-files="true"
filename-pattern="*.TXT">
</int-sftp:inbound-chAnnel-adapter>
<int:poller default="true" fixed-rate="${quartz.pick.repeaTinterval}" max-messages-per-poll="${sftp.msg.per.poll}">
<int:transactional synchronization-factory="syncFactory" />
</int:poller>
<int:transaction-synchronization-factory id="syncFactory">
<int:after-rollBACk expression="@acceptOnceFilter.remove(payload)"/>
</int:transaction-synchronization-factory>
<bean id="acceptOnceFilter" class="org.springframework.integration.file.filters.AcceptOnceFileListFilter"/>
<int:service-activator input-chAnnel="sftpChAnnel" ref="msgHandler" method="handlemessage"/>
<bean id="transactionManager" class="org.springframework.integration.transaction.PseudotransactionManager"/>
<bean id="filenameGenerator" class="org.springframework.integration.file.DefaultFilenameGenerator" />
这里,当文件从远程传输到本地时,服务激活器被调用。
服务激活器完成作业后,如何配置删除本地文件?
编辑:通过以下更改解决了从远程和本地删除有效负载的问题:
<int:transaction-synchronization-factory id="syncFactory">
<int:after-commit expression="payload.delete()" chAnnel="nullChAnnel"/>
<int:after-rollBACk expression="@acceptOnceFilter.remove(payload)"/>
</int:transaction-synchronization-factory>
以上是大佬教程为你收集整理的Spring SFTP入站chanel适配器删除本地文件全部内容,希望文章能够帮你解决Spring SFTP入站chanel适配器删除本地文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。