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;
}
And I need to upload 10-20 xml files to SFTP, (each has size ~150MB)
The main problem, that I receive SftpException. InputStream is closed or Socket exception. I can`t use Cashed session, as customer restrict this.
also, I put files with a parallel stream
Arrays.stream(files)
.parallel()
.forEach(sftpService::uploadFile);
So, what is the safest way to upload all files to sftp.