2014-05-12 75 views
1

我有一個文件:入站通道適配器輪詢目錄的文件,然後通過SFTP發送到服務器。上傳之後(工作正常),原始文件需要被刪除;如何在上傳後刪除原始文件? 在文件:出站通道適配器中,我可以設置一個屬性來自動解碼文件。彈簧集成 - 文件:入站通道適配器 - 刪除原始文件

<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"/> 

回答

4

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

+1

或者,使用'ExpressionEvaluatingRequestHandlerAdvice' [這裏的重試和更多示例](https://github.com/spring-projects/spring-integration-samples/blob/master/intermediate/retry-and-more /src/main/resources/META-INF/spring/integration/expression-advice-context.xml)使用該技術在成功時刪除文件,或使用ftp出站適配器將其重命名爲失敗。 –

+0

春季融合是驚人的!感謝加里和阿爾喬姆,那正是我一直在尋找的! –

相關問題