【问题标题】:Kafka consumer reconnection after getting disconnected断开连接后卡夫卡消费者重新连接
【发布时间】:2019-09-19 13:49:11
【问题描述】:

我使用 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.

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

reconnect.backoff.ms -- 重新连接到反复连接失败的代理时等待的最长时间(以毫秒为单位)。如果提供,每台主机的退避将在每次连续连接失败时呈指数增长,直至达到此最大值。在计算回退增加后,添加 20% 的随机抖动以避免连接风暴。默认值1000毫秒)

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

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

我在这里遗漏了什么吗?谢谢!

【问题讨论】:

  • 你找到它发生的主要原因了吗,我遇到了错误。
  • @HrishikeshMishra 你找到原因了吗?

标签: apache-kafka kafka-consumer-api spring-kafka


【解决方案1】:

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

将日志级别切换到DEBUG,以防您想了解更多有关导致此问题的原因的信息。

【讨论】:

  • 我该怎么做才能让 kafkaConsumer 抛出异常而不是重新连接?因为kafkaConsumer在brokerList是vip或者k8s-server-name的时候有bug,在这些情况下永远不会成功。
猜你喜欢
  • 2019-08-06
  • 1970-01-01
  • 2019-06-23
  • 2019-10-31
  • 2022-08-08
  • 1970-01-01
  • 2020-10-28
  • 2020-08-27
  • 2016-12-17
相关资源
最近更新 更多