【问题标题】:When Kafka Event Expired, will the related consumer's Lag get stuck?Kafka Event Expired时,相关consumer的Lag会卡住吗?
【发布时间】:2016-04-08 18:18:57
【问题描述】:

假设没有更多的 Kafka 事件发布,当之前所有持久在 Kafka 代理中的 kafka 事件由于保留而过期并且相关的消费者尚未完成消费所有事件时,相关的 Kafka 消费者 Lag 是否会卡在给定的分区上?

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    流程将是这样的:

    1. 假设您当前的偏移量是 100,但由于保留政策,最早可用的偏移量是 110。
    2. 您的消费者发送 FetchRequest 请求来自偏移量 100 的消息。
    3. Kafka 返回错误(准确地说是OFFSET_OUT_OF_RANGE)。
    4. 您的消费者通过发送 OffsetRequest 指定要重置为哪个值来对此错误做出反应,假设您的情况是 EARLIEST
    5. Kafka 返回具有可用偏移量的OffsetResponse,在您的情况下为 110。
    6. 您的消费者将当前偏移量强制设置为 110 并重新开始获取。

    【讨论】:

    • 感谢您的分享。我需要确认的一件事是,如果我使用高级 API,上述偏移重置流程是否对客户透明且无法由最终用户控制?
    • 顺便说一句,我正在使用具有高级 API 的旧消费者。
    • @BrianLing 这适用于新老高级消费者。我对您的第一个问题不太清楚,但据我了解-此过程不受最终用户控制,而是在后台自动发生。最终用户可能甚至不知道偏移量已被重置。
    【解决方案2】:

    查看代码:(kafka 0.9 消费者) 创建新消费者时定义了resetStrategy

    public enum OffsetResetStrategy {
        LATEST, EARLIEST, NONE
    }
    

    所以,如果偏移超出范围,消费者将继续阅读符合该政策的内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-09
      • 2016-10-12
      • 2023-03-02
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      相关资源
      最近更新 更多