1

我已经成功地设置了带有 SFTP 集成的 Spring,并且正在轮询 SFTP 服务器并下载文件。

我想知道的是,一旦下载完成,是否可以在每个文件上触发任务?我不想走上文件系统监视的道路——Spring SFTP 中是否为此内置了一些东西?

查看文档后,似乎可以使用 Channels 来实现。

这是我的接收器通道当前的样子:

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

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

编辑:从 Spring 文档中它说:

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

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

4

2 回答 2

1

看起来您必须从企业集成模式的开头开始,并为自己确定哪个channel是集成中最重要的一等公民。

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

另请参阅Spring 集成示例以获取更多信息。

于 2016-05-05T15:29:53.353 回答
0

为了其他遇到此问题的人的利益,问题是只有在传输所有文件时才将消息放在接收的通道上。它们不是一次处理一个(正如我所料)。在我的情况下,我在远程 SFTP 服务器上有数千个大文件,只有在所有文件都下载后才会将消息发送到接收者通道。

我不确定这是否是设计使然。

于 2016-05-06T16:49:30.120 回答