SFTP 上传文件到同一远程服务器上的多个目录

SFTP upload file to multiple directories on the same remote server

我已经使用示例 here 实现了 SFTP 上传到远程服务器。

我的要求是我必须将同一个文件上传到同一台服务器上的多个目录。目录的确切数量或位置将是已知的 post-production.

目前,我的实现允许通过在消息处理程序上设置 remoteDirectoryExpression 来上传到单个服务器上的单个目录。 remoteDirectoryExpression 来自 属性 文件。预计其余目录将以逗号分隔的方式配置在相同的 属性 上。我希望我的实现从 属性 中提取每个以逗号分隔的目录,并将文件上传到每个目录。

这可能吗?我遇到了发布-订阅渠道,但目前正在努力了解如何将它们包含在我的实施中。即使那样,pub-sub 通道似乎也需要在代码中进行预配置,其中一个通道 = 一个目录。那我走对了吗?

没有什么built-in可以做到这一点。

最简单的方法是在上游创建自定义拆分器并使用 header 中的目录发出 n 条消息,然后在远程目录表达式中使用 header 值。

尝试使用 publishSubscribeChannel

.publishSubscribeChannel(s -> s
                        .subscribe(f -> f
                                .handle(Sftp.outboundAdapter(sftpSessionFactory())
                                        .remoteDirectory(getRemoteRootDir() + remoteDirectory1)

                                        .temporaryFileSuffix(".tmp")))
                        .subscribe(f -> f
                                .handle(Sftp.outboundAdapter(sftpSessionFactory())
                                        .remoteDirectory(getRemoteRootDir() + remoteDirectory2)
                                        .fileNameExpression(fileRenameExpression)
                                        .temporaryFileSuffix(".tmp")))