Как использовать исходящий шлюз sftp интеграции Spring с конфигурацией Java
Я новичок в интеграции с Spring sftp. Теперь я хочу загружать файлы из нескольких каталогов. Мне кажется, что SFTP Outbound Gateway - мой выбор, но я нахожу только примеры с использованием XML-конфигурации. Как это можно сделать с помощью Java-конфигурации? Мой класс конфигурации:
@Configuration
public class SftpConfig {
@Bean
public SessionFactory<LsEntry> sftpSessionFactory(){
DefaultSftpSessionFactory defaultSftpSessionFactory = new DefaultSftpSessionFactory();
...
return new CachingSessionFactory<LsEntry>(defaultSftpSessionFactory);
}
@Bean
@InboundChannelAdapter(channel = "sftpChannel",autoStartup = "false", poller = @Poller(fixedDelay = "5000"))
public MessageSource<File> sftpMessageSource() {
...
}
@Bean(name = "lsGateway")
@ServiceActivator(inputChannel = "sftpChannel")
public MessageHandler handlerLs(){
SftpOutboundGateway sftpOutboundGateway = new SftpOutboundGateway(sftpSessionFactory(),"ls","payload");
sftpOutboundGateway.setLocalDirectory(new File("sftp-gateway"));
return sftpOutboundGateway;
}
}
@MessagingGateway
public interface OutboundGatewayOption {
@Gateway(requestChannel = "sftpChannel")
public List<Boolean> lsGetAndRmFiles(String dir);
}
но когда я запускаю приложение, ничего не происходит, где не так?
---- обновление --- Мой тестовый класс
@SpringBootTest(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@Configuration
@EnableIntegration
@Slf4j
@MessageEndpoint
public class SftpConfigTest{
@Autowired
private OutboundGatewayOption gatewayOption;
@Test
public void test(){
gatewayOption.lsGetAndRmFiles("/");
}
}
1 ответ
Непонятно, что вы подразумеваете под "ничего не происходит". Похоже, у вас есть два способа инициировать запрос LS - шлюз обмена сообщениями (который вы должны вызвать) и адаптер входящего канала, который имеет autoStartup = "false"
- он не вызовет шлюз, пока он не запустится.
Кроме того, при использовании этого в качестве триггера вам понадобится выходной канал на шлюзе SFTP (куда отправить результат). При вызове шлюза путем вызова шлюза обмена сообщениями результат будет возвращен шлюзу (поскольку шлюз SFTP не имеет выходного канала).