19、Kafka:新消费组的消费offset规则

本文详细解析了Apache Kafka中新消费组的消费offset规则,重点对比了`latest`(默认消费新消息)和`earliest`(首次从头消费)两种配置模式。通过Java代码示例和实际测试场景,帮助开发者理解如何控制消费者从分区的哪个位置开始消费消息,是Kafka入门和调优的实用指南。

新消费组的消费offset规则

新消费组中的消费者在启动以后,默认会从当前分区的最后⼀条消息的offset+1开始消费(消费新消息)。可以通过以下的设置,让新的消费者第⼀次从头开始消费。之后开始消费新消息(最后消费的位置的偏移量+1)

  • latest:默认的,消费新消息
  • earliest:第⼀次从头开始消费。之后开始消费新消息(最后消费的位置的偏移量+1)
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");

测试

测试latest

将消费者消费组改成testGroup1

 

直接订阅主题test

 

启动后发现没有消费到消息,这是因为新消费组消费主题,是从最新的offset进行消费的

 

这时生产者发送消息,新消费组的消费者也可以接收到并消费

  • 生产者
     
  • 消费者
     

测试earliest

新建一个testGroup2的消费组

 

然后将配置改为earliest

 

启动Consumer后会获取到test主题下所有分区的从0的offset位置以后的所有消息,下次会从已经消费的offset+1位置处开始消费

 

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: