在 Spring Kafka 中检测到 broker 断开连接

Detecting that the broker is disconnected in Spring Kafka

我正在尝试为我的 Kafka 消费者编写健康检查。当应用程序启动并且 运行 我关闭 Kafka 并且我看到很多

 Connection to node 1001 (/127.0.0.1:9092) could not be established. Broker may not be available.

在日志中但没有 ApplicationEvents,调用了错误处理程序,什么也没有。似乎无法通过侦听器调用来获取 NetworkClient 状态。我的理解是当代理断开连接时会生成一个 ApplicationEvent。我错过了什么吗?

不幸的是,kafka-clients 没有向调用者提供代理已关闭的指示。

这些是唯一可用的事件:https://docs.spring.io/spring-kafka/docs/current/reference/html/#events

您可以启用 ListenerContainerIdleEvents 但您无法判断容器是空闲还是未连接。

但是,您可以在事件中使用Consumer 进行一些非破坏性调用,例如获取分配主题的endOffsets()。如果调用超时,您将得到一个异常。有关示例,请参阅