【问题标题】:What is the difference between kafka earliest and latest offset valueskafka最早和最新的偏移值有什么区别
【发布时间】:2018-06-27 11:43:55
【问题描述】:

producer 发送消息 1、2、3、4

consumer 接收消息 1、2、3、4

consumer 崩溃/断开连接

producer 发送消息 5、6、7

consumer 恢复并应该接收从 5 而不是 7 开始的消息

对于这种结果,我必须使用哪个offset 值以及需要做哪些其他更改/配置

【问题讨论】:

    标签: apache-kafka kafka-consumer-api


    【解决方案1】:

    当消费者加入消费者组时,它将获取最后提交的偏移量,因此如果在崩溃之前提交了最新的偏移量(即 4),它将重新开始从 5、6、7 读取。 auto.offset.reset 属性的 earliestlatest 值在消费者启动但分配的分区没有提交的偏移量时使用。在这种情况下,您可以选择是从头开始(最早)还是在最后一条消息之后(最新)重新阅读所有消息。

    【讨论】:

    • Producer 连续发送消息...我在停止consumer之前检查了偏移值,它是8023。10分钟后我开始consumer然后第一个偏移值是8020。经过一些我又一次停止了消费者,那个时候偏移值是9239一个小时后我开始consumer然后第一个消息偏移值是9299我正在设置一个groupIdauto.offset.resetlatest我也是记录 partition 值,它只是 0
    • 所以如果你设置为latest,它会读7。提交7之后,会读6和5吗?或者,如果有更高优先级的源源不断的新记录流,它们不会被处理?
    • 当你提交一个偏移量时,意味着你阅读了之前的所有消息。所以提交 7 意味着接下来你不会读取 6 和 5 而是读取生产者发送的新传入消息 8。
    • 我认为@ppatierno 没有回答这个问题。对于 Sat 的问题:auto.offset.reset 的值应该是最新的。当 auto.offset.reset 设置为 latest 时,会出现两种情况:消费者第一次订阅主题,订阅后才会收到消息到达。另一种情况是当消费者重新连接到主题时(在崩溃或其他情况下),消费者将收到消息 5、6、7,因为最近的提交是 4。
    • 对于@Yoker 的问题:消息的顺序是不可变的。消费者将按以下顺序接收消息:5、6、7
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2021-08-04
    • 2021-08-09
    • 2017-11-29
    • 1970-01-01
    • 2019-12-13
    • 2019-11-25
    相关资源
    最近更新 更多