它比您描述的要复杂一些。
在
auto.offset.reset只有当您的消费群没有一个有效的抵消承诺某处配置踢腿(现2个支持偏移存储器是卡夫卡和动物园管理员),而且还依赖于某种消费的你用什么。
如果您使用高级Java使用者,请设想以下情形:
您在某个消费群体
group1
中有一个消费了5条消息并死亡的消费者。下次启动该使用者时,它甚至不会使用该auto.offset.reset
配置,并且将从死亡的位置继续,因为它将仅从偏移存储(如我所提到的,Kafka或ZK)中获取存储的偏移。您在主题中有消息(如您所述),并且在新的使用者组中启动了使用者
group2
。没有偏移量存储在任何地方,这次auto.offset.reset
配置将决定是从主题的开头(earliest
)还是从主题的结尾(latest
)开始
影响保留值
earliest和
latest配置对应的另一件事是日志保留策略。想象一下,您有一个保留时间配置为1小时的主题。您产生5条消息,然后一个小时后又发布5条消息。该
latest偏移将仍然相同,前面的例子,但
earliest一个不能是
0因为卡夫卡都已经删除这些消息,并因此最早可偏移会
5。
上面提到的所有内容都不相关,
SimpleConsumer并且每次运行它都将决定从哪里开始使用
auto.offset.resetconfig。
如果您使用的卡夫卡版本比0.9老,你要替换
earliest,
latest用
smallest,
largest。



