我有以下要求为每个传入的消息实施到我们的系统
我已成功实施了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>