卡夫卡消费者断开连接后重新连接

Hua*_*Hua 5 apache-kafka kafka-consumer-api spring-kafka

我使用Spring Boot和Spring Kafka设置了我的项目,并且有三个使用者。查看日志,可以发现消费者不时断开连接:

catalina.out:2019-04-27 02:19:57.962  INFO 18245 --- [ntainer#2-0-C-1] o.a.kafka.clients.FetchSessionHandler    : [Consumer clientId=consumer-2, groupId=FalconDataRiver1] Error sending fetch request (sessionId=1338157432, epoch=205630) to node 101: org.apache.kafka.common.errors.DisconnectException.
catalina.out:2019-04-27 02:19:57.962  INFO 18245 --- [ntainer#4-0-C-1] o.a.kafka.clients.FetchSessionHandler    : [Consumer clientId=consumer-6, groupId=FalconDataRiver1] Error sending fetch request (sessionId=727942178, epoch=234691) to node 101: org.apache.kafka.common.errors.DisconnectException.
catalina.out:2019-04-27 02:19:57.962  INFO 18245 --- [ntainer#0-0-C-1] o.a.kafka.clients.FetchSessionHandler    : [Consumer clientId=consumer-10, groupId=FalconDataRiver1] Error sending fetch request (sessionId=836405004, epoch=234351) to node 101: org.apache.kafka.common.errors.DisconnectException.
catalina.out:2019-04-27 02:19:58.023  INFO 18245 --- [ntainer#1-0-C-1] o.a.kafka.clients.FetchSessionHandler    : [Consumer clientId=consumer-12, groupId=FalconDataRiver1] Error sending fetch request (sessionId=1385585601, epoch=234394) to node 101: org.apache.kafka.common.errors.DisconnectException.
catalina.out:2019-04-27 02:19:58.023  INFO 18245 --- [ntainer#3-0-C-1] o.a.kafka.clients.FetchSessionHandler    : [Consumer clientId=consumer-4, groupId=FalconDataRiver1] Error sending fetch request (sessionId=452630289, epoch=201944) to node 101: org.apache.kafka.common.errors.DisconnectException.
catalina.out:2019-04-27 02:19:58.023  INFO 18245 --- [ntainer#5-0-C-1] o.a.kafka.clients.FetchSessionHandler    : [Consumer clientId=consumer-8, groupId=FalconDataRiver1] Error sending fetch request (sessionId=78802572, epoch=103) to node 101: org.apache.kafka.common.errors.DisconnectException.
catalina.out:2019-04-27 02:19:58.040  INFO 18245 --- [ntainer#2-0-C-1] o.a.kafka.clients.FetchSessionHandler    : [Consumer clientId=consumer-2, groupId=FalconDataRiver1] Error sending fetch request (sessionId=1338157432, epoch=INITIAL) to node 101: org.apache.kafka.common.errors.DisconnectException.
Run Code Online (Sandbox Code Playgroud)

我没有在重新连接方面配置使用者。我知道Kafka文档中有两个属性:

reconnect.backoff.ms-重新连接到反复连接失败的代理时要等待的最长时间(以毫秒为单位)。如果提供此选项,则对于每个连续的连接失败,每个主机的退避量将成倍增加,直至达到此最大值。在计算退避增量之后,添加20%的随机抖动以避免连接风暴。预设值1000毫秒)

reconnect.backoff.ms-尝试重新连接到给定主机之前要等待的基本时间。这样可以避免以紧密的循环重复连接到主机。此回退适用于客户端到代理的所有连接尝试。默认值50毫秒)

在上面的日志消息之后,我可以看到三个使用者仍在使用中。显然,他们已从这些断开连接异常中恢复过来。令我困扰的是,日志中没有记录重新连接和恢复过程的内容。

我在这里想念什么吗?谢谢!

Gio*_*ous 6

Kafka 会自动从这个内部错误中恢复,这就是日志级别为INFO. 显然,您的消费者仍然可以使用这些消息。

DEBUG如果您想获得有关导致此问题的原因的更多信息,请将日志级别切换到。

  • 我该怎么做才能让 kafkaConsumer 抛出异常而不是重新连接?因为kafkaConsumer在brokerList是vip或k8s-server-name时有一个bug,并且在这些情况下它永远不会成功。 (2认同)