Обработка нескольких хостов SFTP в Spring Integration
Я хочу настроить несколько хостов SFTP, поэтому на основе пользовательского ввода (передача пользователем hostName) я выберу HOST и выполню операцию чтения.
Проблема в том, что я не хочу создавать несколько файлов Java.вместо этого я хочу ввести информацию о хосте в виде массива в файлах свойств и на основе этого ввода создать конфигурацию 1, 2 или более SessionFactories, шлюзы и т. д.
Ниже приведена конфигурация, которую я использовал для настройки одногоХост .....
@Configuration
public class HostConfiguration {
@Bean
public SessionFactory<LsEntry> sftpSessionFactory() {
DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
factory.setPort(22);
factory.setHost(host);
factory.setUser(user);
factory.setPassword(password);
factory.setAllowUnknownKeys(true);
return new CachingSessionFactory<LsEntry>(factory);
}
@Bean
@ServiceActivator(inputChannel = "toSftpReadChannel")
@Description("Sftp Outbound Gateway for SFTP Read Operation")
public MessageHandler sftpReadHandler() {
SftpOutboundGateway sftpReadGateway = new SftpOutboundGatewaysftpSessionFactory(), Command.LS.getCommand(), "payload");
sftpReadGateway.setAsync(true);
sftpReadGateway.setOption(Option.NAME_ONLY);
sftpReadGateway.setOutputChannel(fromSftpReadChannel());
return sftpReadGateway;
}
@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata poller() {
return Pollers.fixedRate(500).get();
}
@Bean
@Description("Sftp Read Request Channel")
public MessageChannel toSftpReadChannel(){
return new QueueChannel(5);
}
@Bean
@Description("Sftp Read Response Channel")
public MessageChannel fromSftpReadChannel(){
return new DirectChannel();
}
@MessagingGateway
public interface SftpGateway {
@Gateway(requestChannel = "toSftpReadChannel", replyChannel = "fromSftpReadChannel")
Future<Message> readFromRemoteSftp(Message message);
}
}
Есть идеи, как этого добиться в Spring-Boot / Spring-Integration !!!!