我们有几个使用 Kafka 的应用程序,它们经常遇到 DisconnectException。
发生的事情总是像下面这样:
Error sending fetch request (sessionId=552335215, epoch=INITIAL) to node 0: org.apache.kafka.common.errors.DisconnectException.
Run Code Online (Sandbox Code Playgroud)
如果应用程序消耗单个分区,也会出现同样的问题:在这种情况下,5 分钟内没有消耗任何消息。
根据https://issues.apache.org/jira/browse/KAFKA-6520 ,我的理解是,如果出现连接问题,Kafka 消费者会重试(根据 reconnect.backoff.max,默认情况下最多 1 秒) .ms config),向最终用户隐藏问题。对 poll() 的调用返回 0 消息,因此轮询循环不断进行。
然而,一些审问: