user1028741
user1028741

Reputation: 2815

Checking health of Kafka Stream Threads

When some of the stream threads die (because of an exception for example), I don't want to continue, but restart the process.

In order to do this, I need to identify this state.

I know I can use kafkaStream.state(), but it checks the state of the whole kstreams. Meaning if only one StreamThread has died, it will not be discovered by kafkaStream.state().

What is the best way for me to know in the code that all StreamThreads are alive and working?

Upvotes: 2

Views: 1189

Answers (1)

Tuyen Luong
Tuyen Luong

Reputation: 1366

Update : adding timeout to KafkaStreams#close() as it can cause deadlock as Matthias stated in the comment

If you want to detect if any StreamThreads has dies then you can use KafkaStreams#setUncaughtExceptionHandler(), you can stop streaming and exit app:

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

Upvotes: 3

Related Questions