我有一个 file:inbound-channel-adapter,它轮询目录中的文件,然后通过 SFTP 将其发送到服务器。上传后(效果很好),需要删除原始文件;上传后如何删除原始文件? 在 file:outbound-channel-adapter 中,我可以设置一个属性来自动删除文件。
<file:inbound-channel-adapter
id="incomingFiles"
channel="myFiles"
directory="file:/tmp/kots">
<int:poller id="poller" fixed-delay="1000"/>
</file:inbound-channel-adapter>
<int:channel id="myFiles"/>
....
<sftp:outbound-channel-adapter
id="sftpOutboundAdapter"
channel="myFiles"
charset="UTF-8"
remote-directory="/tmp/testing"
session-factory="sftpSessionFactory"/>
最佳答案
Transaction Synchronization适合您:
<file:inbound-channel-adapter
id="incomingFiles"
channel="myFiles"
directory="file:/tmp/kots">
<int:poller id="poller" fixed-delay="1000">
<int:transactional transaction-manager="transactionManager" synchronization-factory="syncFactory" />
</int:poller>
</file:inbound-channel-adapter>
<int:transaction-synchronization-factory id="syncFactory">
<int:after-commit expression="payload.delete()" channel="nullChannel"/>
</int:transaction-synchronization-factory>
其中 transactionManager
可能是 org.springframework.integration.transaction.PseudoTransactionManager
开箱即用。
关于Spring集成-文件:inbound-channel-adapter - remove original file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23613204/