kafka消费端之再均衡

文章目录

再均衡是指分区的所属权从一个消费者转移到另一消费者的行为,它为消费组具备高可用性和伸缩性提供保障,使我们可以既方便又安全地删除消费组内的消费者或往消费组内添加消费者。不过 在再均衡发生期间,消费组内的消费者是无法读取消息的 。也就是说, 在再均衡发主期间的这一小段时间内,消费组会变得不可用 。另外, 当一个分区被重新分配给另一个消费者时,消费者当前的状态也会丢失。比如消费者消费完某个分区中的一部分消息时还没有来得及提交消费位移就发生了再均衡操作,之后这个分区又被分配给了消费组内的另一个消费者,原来被消费完的那部分消息又被重新消费一遍,也就是发生了重复消费。一般情况下,应尽量避免不必要的再均衡的发生。

在消费端代码的subscribe()方法中存在再均衡监听器ConsumerRebalanceListener, 在subscribe(Collection topics,ConsumerRebalanceListener listener)和subscribe(Pattern pattem,ConsumerRebalanceListener listener)方法中都有它的身影。再均衡监听器用来设定发生再均衡动作前后的一些准备或收尾的动作。ConsumerRebalanceListener是一个接口,包含2个方法:

  • (1) void onPartitionsRevoked(Collection partitions)
    这个方法会在再均衡开始之前和消费者停止读取消息之后被调用。可以通过这个回调方法来处理消费位移的提交,以此来避免一些不必要的重复消费现象的发生。参数partitions表示再均衡前所分配到的分区。我们可以在这个方法中实现在发生再均衡前把已经消费得offset提交给服务端,防止再均衡后重复消费
  • (2) void onPartitionsAssigned(Collection partitions)
    这个方法会在重新分配分区之后和消费者开始读取消费之前被调用。参数partitions表示再均衡后所分配到的分区。
相关推荐
Java开发的小李1 小时前
SpringBoot + Redis 实现分布式 Session 共享(解决多实例登录状态丢失问题)
spring boot·redis·分布式
tsyjjOvO3 小时前
分布式事务 Seata 与链路追踪 SkyWalking 全解析
分布式·skywalking
ezreal_pan10 小时前
Kafka Docker 部署持久化避坑指南:解决重启后 Cluster ID 不匹配问题
分布式·docker·zookeeper·容器·kafka·devops
小张小张爱学习11 小时前
Kafka面试题
分布式·kafka
fengxin_rou12 小时前
RabbitMQ安装教程:windows本地安装和docker部署
java·分布式·后端·rabbitmq
星辰_mya12 小时前
分布式消息领域的“深水区”问题
分布式
juniperhan13 小时前
Flink 系列第20篇:Flink SQL 语法全解:从 DDL 到 DML,窗口、聚合、列转行一网打尽
大数据·数据仓库·分布式·sql·flink
小旭952713 小时前
分布式事务 Seata 详解 + 链路追踪 SkyWalking 实战
java·分布式·后端·信息可视化·skywalking
ElevenS_it18815 小时前
日志在哪里找?分布式环境下日志采集断裂的5个排查路径
运维·网络·分布式
Devin~Y15 小时前
大厂Java面试实录:Spring Boot/Cloud + Redis/Kafka + JWT + RAG/Agent(小Y翻车版)
java·spring boot·redis·spring cloud·kafka·spring security·jwt