Проверка работоспособности потоков Kafka Stream - PullRequest
0 голосов
/ 23 апреля 2020

Когда некоторые потоки потока d ie (например, из-за исключения), я не хочу продолжать, но перезапустить процесс.

Для этого мне нужно идентифицируйте это состояние.

Я знаю, что могу использовать kafkaStream.state(), но он проверяет состояние целых kstreams. Это означает, что если бы только один StreamThread умер, он не будет обнаружен kafkaStream.state().

Как мне лучше всего узнать в коде, что все StreamThreads живы и работают?

1 Ответ

1 голос
/ 23 апреля 2020

Обновление : добавление тайм-аута к KafkaStreams#close(), поскольку это может вызвать тупик, как сказал Матиас в комментарии

Если вы хотите определить, умирает ли какой-либо StreamThreads тогда вы можете использовать KafkaStreams#setUncaughtExceptionHandler(), вы можете остановить потоковую передачу и выйти из приложения:

kafkaStreams.setUncaughtExceptionHandler((t, e) -> {
    logger.error("Exiting ", e);
    kafkaStreams.close(10);
    System.exit(1);//exit with error code so container can restart this app
});
...