当Kafka Event Expired时,相关消费者的滞后会陷入困境吗?

时间:2016-04-07 14:50:56

标签: apache-kafka

假设不再发布Kafka事件,当Kafka经纪人中所有先前的kafka事件因保留而过期且相关消费者尚未完成消耗所有事件时,相关的Kafka消费者滞后是否会陷入给定的分区?

2 个答案:

答案 0 :(得分:4)

流程将是这样的:

  1. 假设您当前的偏移量为100,但由于保留策略,最早的可用偏移量为110。
  2. 您的消费者从偏移100发送FetchRequest个请求消息。
  3. Kafka返回错误(确切地说OFFSET_OUT_OF_RANGE。)
  4. 您的消费者通过发送OffsetRequest指定要重置的值来对此错误作出反应,假设您的情况为EARLIEST
  5. Kafka返回OffsetResponse,其中包含可用的偏移量,在您的情况下为110。
  6. 您的消费者强行将当前偏移量设置为110并再次开始提取。

答案 1 :(得分:0)

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

public enum OffsetResetStrategy {
    LATEST, EARLIEST, NONE
}

所以,如果偏移范围超出范围,则比继续读取该政策