Завершение работы потребителя kafka после обработки сообщений - PullRequest
0 голосов
/ 06 мая 2020

Я использую @KafkaListener(topics = "${topic}") для получения сообщений от topi c в приложении с весенней загрузкой, и мне нужно, чтобы это запускалось периодически. Версия spring-kafka - 2.2.4.RELEASE.

Одним из способов достижения этого могла быть пакетная обработка каждые 6 часов с использованием fetch.max.wait.ms, но 6 часов кажутся слишком большими для этой конфигурации.

Следовательно, я ищу способ закрыть приложение после обработки и перезапускать его каждые 6 часов.

Другой способ выглядит примерно так, как показано ниже, но это не гарантирует, что приложение завершила обработку в течение времени ожидания (30 сек c в примере ниже).

public class Application {
    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext run = SpringApplication.run(Application.class, args);
        Thread.sleep(30000);
        run.close();
    }
}

Каков изящный способ выключения потребителя, чтобы выключение происходило только после того, как он обработал пакет сообщения?

1 Ответ

0 голосов
/ 06 мая 2020

См. этот ответ .

Завершите работу приложения, когда все экземпляры контейнера go простаивают.

...