Kafka会在内部杀死所有未正确轮询的节点,但我们不希望不良节点停滞不前,并且希望了解哪些节点正在工作,因此自然地我们希望构建经典的运行状况检查。
进行健康检查的明显方法是使用KafkaStream#state#isRunning
,但这完全具有欺骗性。如果与Kafka的基础网络连接已断开,或者没有导致内部线程死亡的数十种情况中的任何一种,即使日志到处都引发了错误,KafkaStreams
仍然报告自己仍然处于活动状态。是否有任何正确的方法来了解Kafka流内部发生的情况?与卡夫卡打交道时,是否期望进行健全的健康检查是错误的方法?
需要明确的是,我不是在谈论Kafka 集群的运行状况检查,尤其是Streams处理器节点。