将大量文件加载到 SFTP 问题



I have Spring integreation sftp config

@Bean
public SessionFactory<ChannelSftp.LsEntry> sftpSessionFactory() {
final DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(false);
factory.setHost(properties.getHost());
factory.setPort(properties.getPort());
factory.setUser(properties.getUser());
factory.setPassword(properties.getPassword());
factory.setAllowUnknownKeys(true);
return factory;
@Bean
@ServiceActivator(inputChannel = "toSftpChannel")
public MessageHandler handler(@Value("${sftp.folder}") final String remoteDirectory) {
final SftpMessageHandler handler = new SftpMessageHandler(sftpSessionFactory());
handler.setRemoteDirectoryExpressionString(remoteDirectory);
handler.setAutoCreateDirectory(true);
return handler;
}

我需要将 10-20 个 xml 文件上传到 SFTP,(每个文件的大小为 ~150MB(

主要问题是我收到SftpException。输入流已关闭或套接字异常。 我无法使用兑现会话,因为客户对此进行了限制。

另外,我把文件放在一个并行流上

Arrays.stream(files)
.parallel()
.forEach(sftpService::uploadFile);

那么,将所有文件上传到 sftp 的最安全方法是什么。

通过删除并行流并为每个上传打开每个会话来解决

最新更新