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表示再均衡后所分配到的分区。
相关推荐
沉着的码农2 小时前
【设计模式】基于责任链模式的参数校验
java·spring boot·分布式
ZHOU_WUYI14 小时前
一个简单的分布式追踪系统
分布式
码不停蹄的玄黓18 小时前
MySQL分布式ID冲突详解:场景、原因与解决方案
数据库·分布式·mysql·id冲突
王小王-12318 小时前
基于Hadoop的公共自行车数据分布式存储和计算平台的设计与实现
大数据·hive·hadoop·分布式·hadoop公共自行车·共享单车大数据分析·hadoop共享单车
要开心吖ZSH20 小时前
《Spring 中上下文传递的那些事儿》Part 4:分布式链路追踪 —— Sleuth + Zipkin 实践
java·分布式·spring
幼稚园的山代王21 小时前
RabbitMQ 4.1.1初体验
分布式·rabbitmq·ruby
百锦再21 小时前
RabbitMQ用法的6种核心模式全面解析
分布式·rabbitmq·路由·消息·通道·交换机·代理
一路向北North21 小时前
RabbitMQ简单消息监听和确认
分布式·rabbitmq·ruby
真实的菜21 小时前
Kafka生态整合深度解析:构建现代化数据架构的核心枢纽
架构·kafka·linq
一路向北North1 天前
使用reactor-rabbitmq库监听Rabbitmq
分布式·rabbitmq·ruby