Я хотел бы сделать следующее с пружинной интеграцией
- Загрузка файлов из sftp
- Отправьте загруженные файлы на http, а также на s3
Вот что у меня есть.
@Bean
@InboundChannelAdapter(channel = "sftpChannel", poller = @Poller(fixedDelay = "100000", maxMessagesPerPoll = "3"))
public MessageSource<File> sftpMessageSource() {
SftpInboundFileSynchronizingMessageSource source = new SftpInboundFileSynchronizingMessageSource(sftpInboundFileSynchronizer());
source.setLocalDirectory(new File("sftp-inbound"));
source.setAutoCreateLocalDirectory(true);
source.setMaxFetchSize(2);
return source;
}
Вот мой сервисный активатор.
Проблема с моим активатором службы заключается в том, что этот запуск выполняется в том же потоке, что и модуль обработки запросов, поэтому, когда файл обрабатывается слишком долго, следующий процесс не обрабатывается до тех пор, пока не будет выполнен первый.
@ServiceActivator(inputChannel = "sftpChannel")
public void sftpChannel(@Payload File payload, @Header("timestamp") long timestamp) {
log.info("Message arrived at sftpChannel");
//do something with file
}
Как я могу запустить файловый процесс в отдельном потоке и освободить вместо него поток опроса, чтобы он мог продолжать извлекать файлы из sftp?