程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了离开组请求后,Spring Kafka 消费者无法重新加入大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决离开组请求后,Spring Kafka 消费者无法重新加入?

开发过程中遇到离开组请求后,Spring Kafka 消费者无法重新加入的问题如何解决?下面主要结合日常开发的经验,给出你关于离开组请求后,Spring Kafka 消费者无法重新加入的解决方法建议,希望对你解决离开组请求后,Spring Kafka 消费者无法重新加入有所启发或帮助;

我们在重负载下在生产中使用 Spring Kafka。 我们使用了 @KafkaListener 注释并将这些侦听器创建为 Spring Boot 服务的一部分。

这些消费者非常频繁地向协调器发送 LeaveGroup 请求,然后消费者无限期地挂起/卡住,没有任何日志或错误。在这种情况下,我们唯一的选择是重新部署该特定实例。

这是我们看到的一系列日志:

Attempt to heartbeat Failed since group is rebalancing
Attempt to heartbeat Failed since group is rebalancing
This member will leave the group because consumer poll timeout has expired. This means the time between subsequent calls to poll() was longer than the configured max.poll.interval.ms,which typically implIEs that the poll loop is spending too much time processing messages. You can address this either by increasing max.poll.interval.ms or by reducing the maximum size of batches returned in poll() with max.poll.records.
Member consumer-1-0d0b333d-9e5b-4038-ac3f-e5d59c4e9d19 sending LeaveGroup request to coordinator 172.25.128.233:9092 (ID: 2147483560 rack: null)

附加信息: 我们正在使用以下 Kafka 配置:

  • 批量大小:10
  • 最大轮询间隔:12 分钟
  • 心跳:8 秒
  • 最大分区大小:10 MB
  • 会话超时:25 秒
  • 请求超时:20 分钟

基本上,我们想知道一旦消费者离开组,为什么它不再发送加入请求?

解决方法

您应该明白重试会挂起消费者线程(如果使用了 BACkOffPolicy)。在重试期间没有对 Consumer.poll() 的调用。 Kafka 有两个属性来确定消费者的健康状况。 session.timeout.ms 用于确定消费者是否处于活动状态。从 kafka-clients 版本 0.10.1.0 开始,心跳是在后台线程上发送的,因此缓慢的消费者不再影响它。 max.poll.interval.ms(默认值:五分钟)用于确定消费者是否出现挂起(处理上次轮询记录的时间过长)。如果 poll() 调用之间的时间超过此时间,则代理会撤销分配的分区并执行重新平衡。对于冗长的重试序列,如果有回退,这很容易发生。

从 2.1.3 版本开始,您可以通过将有状态重试与 SeekToCurrentErrorHandler 结合使用来避免此问题。在这种情况下,每次传递尝试都会将异常抛出回容器,错误处理程序重新查找未处理的偏移量,并且下一次 poll() 重新传递相同的消息。这避免了超过 max.poll.interval.ms 属性的问题(只要尝试之间的单个延迟不超过它)。因此,当您使用 ExponentialBACkOffPolicy 时,您必须确保 maxInterval 小于 max.poll.interval.ms 属性。要启用有状态重试,您可以使用采用有状态布尔参数(将其设置为 true)的 RetryingmessageListenerAdapter 构造函数。配置侦听器容器工厂(用于@KafkaListener)时,将工厂的 statefulRetry 属性设置为 true。

https://docs.spring.io/spring-kafka/reference/html/#stateful-retry

大佬总结

以上是大佬教程为你收集整理的离开组请求后,Spring Kafka 消费者无法重新加入全部内容,希望文章能够帮你解决离开组请求后,Spring Kafka 消费者无法重新加入所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。