关于kafka的新的group无法订阅到topic中历史消息的问题
Posted cxhfuujust
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于kafka的新的group无法订阅到topic中历史消息的问题相关的知识,希望对你有一定的参考价值。
今天在写kafka的java api例子时候,遇到一个问题,比如我创建了一个test主题,往里面写了1,2,3,4,5条消息,在这个时候,我用一个新的group启动了一个消费者,发现该消费者只能读到5以后的消息,而1到5的消息是读不到的,于是感到疑惑,就去官网上找了一下,看到这这样一个配置项“auto.offset.reset”,该配置项的描述如下:
What to do when there is no initial offset in Kafka or if the current offset does not exist any more on the server (e.g. because that data has been deleted):
- earliest: automatically reset the offset to the earliest offset
- latest: automatically reset the offset to the latest offset
- none: throw exception to the consumer if no previous offset is found for the consumer‘s group
- anything else: throw exception to the consumer.
大概意思是,当无法获取当前offset的时候该怎么处理,这个配置项的默认值是“latest”,而当我们新建一个group对主题订阅的时候,第一次应该是符合这个要求的(无法知道当前的offset值),这个时候就触发了“latest”这个配置值对应的操作,也就是说把当前topic里面最新的偏移作为offset,那显然,该消费者是读不到主题中的历史信息的,于是把配置的值改为“earliest”,发现正常了,
需要注意的是,这个配置只在group第一次订阅主题的时候触发,一旦这个offset值被确定下来了,你再把这个配置改成“earliest”就没效果了,因为他已经不符合这个条件了(这个group在这个主题下已经能拿到offset值了)
以上是关于关于kafka的新的group无法订阅到topic中历史消息的问题的主要内容,如果未能解决你的问题,请参考以下文章
Kafka获取订阅某topic的所有consumer group客户端版
查询订阅某topic的所有consumer group(Java API)
.net Kafka.Client多个Consumer Group对Topic消费不能完全覆盖研究总结