Transaction Synchronization is for you:
<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>
Where transactionManager
might be org.springframework.integration.transaction.PseudoTransactionManager
from out of the box.