当一个新的消费组建立的时候,它根本没有可以查找的消费位移,或者消费组的内一个新消费者订阅了一个新的主题,它也没有可以查找的消费位移,当_consumer_offsets主题内有关这个消费组的位移信息过期而被删除以后,它也没有可以查找的消费位移。

        在Kafka中,每当消费者查找不到所记录的消费位移时,就会根据消费者客户端参数auto.offset.reset的配置来决定从何处开始进行消费,这个参数的默认值为“latest”,此参数有以下三个值可以选择。

  • “latest”:表示从分区末尾开始消费,如下图,按照默认的配置,消费者会从9开始消费
  • “earliest”:表示从分区起始开始消费,如下图,消费者会从0开始消费
  • “none”:表示出现查询不到消费位移的时候,既不从最新的消息位置开始消费,也不从最早的消息位置开始消费,此时会报出NoOffsetForPrritionException异常。

 当然,如果auto.offset.reset的值不是上述三个值的话,系统会扔出ConfigException异常的,感兴趣的同学可以自己动手试试。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐