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表示再均衡后所分配到的分区。
相关推荐
幼儿园扛把子\7 小时前
RabbitMQ入门:从安装到高级消息模式
分布式·rabbitmq·java-rabbitmq
C1829818257510 小时前
kafka rocketmq rabbitmq 都是怎么实现顺序消费的
kafka·rabbitmq·rocketmq
天才测试猿11 小时前
Pytest自动化测试框架pytest-xdist分布式测试插件
自动化测试·软件测试·分布式·python·测试工具·测试用例·pytest
元气满满的热码式13 小时前
使用Fluent-bit将容器标准输入和输出的日志发送到Kafka
分布式·云原生·kafka·kubernetes
宋发元13 小时前
从网络通信探究分布式通信的原理
分布式
*_潇_*13 小时前
0011__Apache Spark
大数据·分布式·spark
闯闯桑13 小时前
Spark 解析_spark.sparkContext.getConf().getAll()
大数据·分布式·spark
最懒的菜鸟14 小时前
spring boot3 kafka集群搭建到使用
spring boot·后端·kafka
viperrrrrrrrrr718 小时前
大数据学习(67)- Flume、Sqoop、Kafka、DataX对比
大数据·学习·kafka·sqoop·flume·datax
Clank的游戏栈19 小时前
游戏服务器分区的分布式部署
服务器·分布式·游戏