成功处理文件备份/归档,失败时重试

时间:2014-06-03 13:12:57

标签: spring-integration

我已经设置了一个简单的文件集成,从目录中读取文件并通过sftp传输到远程系统。它运行正常,但是我需要在成功传输后重新处理归档并重试,直到* n,如果传输失败。任何建议如何使用弹簧集成组件来完成这项工作?

    <bean id="sftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
        <property name="host" value="sftp.host"/>
        <property name="port" value="22"/>
        <property name="user" value="user1"/>
        <property name="password" value="pass1"/>
    </bean>

    <file:inbound-channel-adapter channel="fileInputChannel" 
         directory="C:/FileServer" 
         prevent-duplicates="true" 
         filename-pattern="*.pdf">
     <integration:poller fixed-rate="5000"/>
    </file:inbound-channel-adapter> 

       <sftp:outbound-channel-adapter id="sftpOutboundAdapter"
    session-factory="sftpSessionFactory"
    channel="fileInputChannel"
    charset="UTF-8"
    remote-directory=".">
    <sftp:request-handler-advice-chain>
        <bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
            <property name="onSuccessExpression" value="payload.renameTo('C:/succeeded/' + payload.name)"/>
            <property name="successChannel" ref="afterSuccessDeleteChannel"/>
            <property name="onFailureExpression" value="payload.renameTo('C:/failed/' + payload.name)"/>
            <property name="failureChannel" ref="afterFailRenameChannel" />
        </bean>
        <bean id="retryAdvice" class="org.springframework.integration.handler.advice.RequestHandlerRetryAdvice">
            <property name="retryTemplate" ref="retryTemplate"/>
        </bean>
    </sftp:request-handler-advice-chain>
</sftp:outbound-channel-adapter>

由于

1 个答案:

答案 0 :(得分:0)

请参阅retry-and-more sample。它显示了如何使用重试建议以及如何根据成功/失败采取不同的操作。

对于两者,您将在表达式求值建议之后声明重试建议,以便在重试耗尽时调用表达式evaluate advice。