首页 > 解决方案 > 您如何正确编写 Kafka Streams 健康检查?

问题描述

Kafka 将在内部杀死任何未正确轮询的节点,但我们不希望坏节点继续运行,我们希望了解哪些节点正在工作,因此我们自然希望构建一个经典的健康检查。

建立健康检查的明显方法是使用KafkaStream#state#isRunning,但这完全是骗人的。如果到 Kafka 的底层网络连接断开,或者有十几个不会导致内部线程死亡的事情中的任何一个,KafkaStreams即使日志到处抛出错误,它仍然会报告自己是活动的。是否有任何正确的方法可以了解 Kafka 流中发生的事情?在与 Kafka 打交道时,是否期望进行理智的健康检查是错误的做法?

需要明确的是,我不是在谈论 Kafka集群的健康检查,特别是 Streams 处理器节点。

标签: apache-kafkaapache-kafka-streams

解决方案


推荐阅读