gpt4 book ai didi

apache-kafka - 如果 auto.offset.reset=earliest 但主题没有消息,将设置什么消费者偏移量

转载 作者:行者123 更新时间:2023-12-03 16:57:26 24 4
gpt4 key购买 nike

我有 Kafka 服务器版本 2.4 并设置 log.retention.hours=168 (这样主题中的消息将在 7 天后被删除)和 auto.offset.reset=earliest (这样如果消费者没有得到最后提交的偏移量,那么它应该从头开始处理)。由于我使用的是 Kafka 2.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属性(property))。
所以想知道现在 auto.offset.reset=earliest 属性将设置什么消费者偏移量?

最佳答案

尽管 Kafka 主题中没有可用数据,但您的代理仍然知道该分区内的“下一个”偏移量。在您的情况下,该主题的第一个和最后一个偏移量是 10而它不包含任何数据。
因此,已经提交偏移量 10 的消费者将在再次启动时尝试读取 11,这与消费者配置 auto.offset.reset 无关。 .
当您的主题有偏移时,您的示例将变得更加有趣,例如,直到 15,而消费者在提交偏移 10 后关闭。现在,假设由于保留策略,所有偏移都从主题中删除。如果您随后仅启动您的使用者,则使用者配置 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)"


只要 Kafka 主题为空,消费者就不会“设置”偏移量。消费者只是试图找到下一个可用的偏移量,或者基于
  • 最后提交的偏移量或,
  • 如果最后提交的偏移量不再存在,则通过 auto.offset.reset 给出的配置.

  • 就像附加说明:即使消息似乎被保留策略清除了,由于 Data still remains in Kafka topic even after retention time/size,您仍然可能会在主题中看到一些数据。

    关于apache-kafka - 如果 auto.offset.reset=earliest 但主题没有消息,将设置什么消费者偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67093402/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com