Spring集成SFTP - Post Transfer处理

时间:2016-05-05 13:25:04

标签: java spring spring-integration sftp spring-integration-sftp

我已成功设置Spring与SFTP集成,并轮询SFTP服务器并下拉文件。

我想知道的是,一旦下载完成后,是否可以对每个文件触发任务?我不想走文件系统手表的道路 - Spring SFTP中是否有内置的东西?

查看了文档,看起来可以通过频道来实现。

这是我的接收器频道目前的样子:

<int:channel id="receiveChannel">
    <int:queue />
</int:channel>

我不确定我需要做什么来解雇客户拦截器或类似物。

编辑:从Spring文档中可以看出:

  

了解SFTP入站通道适配器是轮询使用者也很重要,因此您必须配置轮询器(全局默认值或本地子元素)。将文件传输到本地目录后,将生成一个带有java.io.File作为其有效负载类型的消息,并将其发送到通道属性标识的通道。

我不确定如何实现这一点 - 并且无法找到任何示例。

2 个答案:

答案 0 :(得分:1)

看起来你必须从Enterprise Integration Patterns的开头开始,并确定channel是整合中最重要的头等公民。

所以,你有一个<int-sftp:inbound-channel-adapter>,负责从远程目录中轮询实体,将它们转到java.io.File(就像你在RTFM中注意到的那样)并发送作为已配置频道的payload Message。该频道的订阅者将接收该消息并在File payload下执行一些所需的过程。

有关详细信息,另请参阅Spring Integration Samples

答案 1 :(得分:0)

为了使遇到此问题的其他人受益,问题是只有在所有文件传输完毕后,才会将邮件置于收到的频道上。它们不是一次处理一次(正如我预期的那样)。在我的情况下,我在远程SFTP服务器上有数千个大文件,并且只有在下载了所有这些文件后才将消息发送到接收器通道。

我不确定这是否符合设计要求。