Дождитесь завершения потока весенней интеграции

#java #spring-integration #spring-integration-dsl

Вопрос:

У меня есть этот простой поток, который считывает файлы из каталога и выполняет некоторые действия :

    @Bean
public IntegrationFlow processMessage() {
    return IntegrationFlows
            .from(messageFlow1Directory(), c -> c
                    .id("flow1")
                    .autoStartup(false)
                    .poller(Pollers.fixedDelay(30000)
                    .errorChannel(errorMessageChannel())))
            .publishSubscribeChannel(s -> s
                    .subscribe(f -> f.handle("flow1Service", "processMessage"))
                    .subscribe(f -> f.handle(otherAction)))
            .get();
}
 

Я добился того, чтобы запустить его с помощью шины управления в одном из моих основных классов :

 public static void main(String[] args) throws InterruptedException {
    SpringApplication.run(Flow1Main.class, args);
    controlBus.send(new GenericMessage<>("@flow1.start()"));
}
 

Что я хочу, так это дождаться завершения потока, прежде чем отправлять stop() и выходить из основного класса.
Как я могу это сделать ?

Заранее благодарю вас за вашу помощь

Ответ №1:

Если вы хотите обработать только одно сообщение, было бы проще использовать шлюз для отправки сообщения, вместо запуска/остановки опроса.

https://docs.spring.io/spring-integration/docs/current/reference/html/messaging-endpoints.html#gateway