Spring Integration(JDBC - SFTP):读取记录,将其发送到SFTP并删除该记录

时间:2014-11-07 11:32:04

标签: spring-integration

我有以下要求为每个传入的消息实施到我们的系统

  1. 将传入转换为XML文件并保存在数据库中
  2. 从数据库中读取该文件并将其发送给SFTP
  3. 文件发送成功后删除条目。
  4. 我已成功实施了Step-1:

    <int-jdbc:outbound-channel-adapter  query="insert into table_name(id, payload) values (:headers[fileName], :payload)" channel="outputChannel" jdbc-operations="jdbcTemplate">
        <int:poller fixed-rate="1000" />
    </int-jdbc:outbound-channel-adapter>
    

    在实现Step-2时,如果我一起读取所有条目,我会获得List中的有效负载,而spring-sftp不支持它。如果将每条记录读取并发送给SFTP,则会出现性能问题。有什么建议吗?

       <int-jdbc:inbound-channel-adapter row-mapper="rowMapper" query="select * from table_name" channel="sftpChannel" jdbc-operations="jdbcTemplate">
            <int:poller fixed-rate="1000" />
        </int-jdbc:inbound-channel-adapter>  
    

    如何在文件发送成功后删除记录?我想payload.delete()在这里不起作用。

       <sftp:outbound-channel-adapter auto-startup="true" id="sftpOutboundAdapter" session-factory="sftpSessionFactory" channel="sftpChannel" charset="UTF-8" remote-directory="${spectrum.ftp.path}" remote-filename-generator-expression="headers[fileName] + '.xml'">
        <sftp:request-handler-advice-chain>
            <bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
                <property name="onSuccessExpression" value="payload.delete()" />
            </bean>
        </sftp:request-handler-advice-chain>
    </sftp:outbound-channel-adapter>
    

0 个答案:

没有答案