У меня запущено приложение Kafka Streams (0.10.2.1). Когда я выключаю кластер Kafka, приложение потоков продолжает ждать следующего сообщения, когда кластер будет восстановлен, он возобновит прием сообщений. Пока кластер не работает, приложение кажется работает нормально. Я тестировал это более 45 минут.
Я ожидал, что Кафка выбросит исключение или остановится. Я настроил StateListener
для регистрации при завершении работы KafkaStreams, однако он никогда не вызывается.
kafkaStreams.setStateListener((newState, _) => {
if (newState == KafkaStreams.State.NOT_RUNNING) {
Log.error("Kafka died unexpectedly.")
}
})
Как заставить Kafka генерировать исключение или завершать работу, когда он не может подключиться к кластеру?
Примечание. Предполагается, что кластер выходит из строя после запуска приложения.
UncaughtExceptionHandler
черезKafkaStream.setUncaughtExceptionHandler()
? Думаю, вы должны получить исключение и вызватьSystem.exit()
. - person Matthias J. Sax   schedule 06.07.2017