Я использую @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();
}
}
Каков изящный способ выключения потребителя, чтобы выключение происходило только после того, как он обработал пакет сообщения?