首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果auto.offset.reset=earliest但主题没有消息,将设置哪些使用者偏移量

如果auto.offset.reset=earliest但主题没有消息,将设置哪些使用者偏移量
EN

Stack Overflow用户
提问于 2021-04-14 14:11:11
回答 2查看 1.6K关注 0票数 6

我有Kafka服务器2.4版本,并设置了log.retention.hours=168(so,主题中的消息将在7天后被删除)和auto.offset.reset=earliest(so,如果消费者没有得到最后提交的偏移量,那么应该从一开始就处理它)。而且由于我使用的是Kafka2.4版本,所以在默认值offsets.retention.minutes=10080 (因为我没有在我的应用程序中设置这个属性)。

我的主题数据是:1,2,3,4,5,6,7,8,9,10

当前消费者在关闭消费者:10之前抵消

端偏移量:10

上次提交由使用者:10抵消

因此,假设我的消费者在过去的7天里没有跑步,我已经在第8天开始消费了。因此,由使用者提交的最后一次偏移量将过期(由于offsets.retention.minutes=10080属性),主题消息也将被删除(由于log.retention.hours=168属性)。

那么现在想知道auto.offset.reset=earliest属性将设置哪些使用者偏移量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-14 14:24:45

虽然在Kafka主题中没有可用的数据,但是您的代理仍然知道该分区中的“下一步”偏移量。在您的例子中,本主题的第一个也是最后一个偏移量是10,而它不包含任何数据。

因此,已经提交偏移量10的使用者将在重新启动时尝试读取11,而不依赖于使用者配置auto.offset.reset

如果您的主题有偏移,比如直到15,而用户在提交偏移量10之后被关闭,那么您的示例将变得更加有趣。现在,想象一下,由于保留策略,所有的偏移都从主题中删除。如果您随后启动了您的使用者,那么消费者配置auto.offset.reset就会生效,如文档中所述:

“当Kafka 中没有初始偏移量时,或者如果服务器上不再存在当前偏移量(例如因为该数据已被删除),该怎么办?”

只要卡夫卡的主题是空的,就没有抵消消费者的“设定”。使用者只是尝试查找下一个可用的偏移量,或者基于

上一次提交的偏移量,或者,如果上次提交的偏移量不再存在,则通过auto.offset.reset.提供的配置。

另外,请注意:尽管保留策略似乎清理了消息,但由于Data still remains in Kafka topic even after retention time/size ,您可能仍然会在主题中看到一些数据。

票数 2
EN

Stack Overflow用户

发布于 2021-04-14 14:24:35

一旦从日志中删除了使用者组,auto.offset.reset将优先考虑,消费者将从一开始就开始使用数据。

代码语言:javascript
复制
My Topic data is : 1,2,3,4,5,6,7,8,9,10

如果主题具有上述数据,使用者将从开始开始,所有1至10条记录都将被消耗。

代码语言:javascript
复制
My Topic data is : 11,12,13,14,15,16,17,18,19,20

在这种情况下,如果由于保留而清除旧数据,则使用者将偏移量重置为最早(当时可用的最早偏移量),然后从那里开始消费,例如,在这个场景中,它将消耗全部从11到20 (因为1到10被清除)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67093402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档