【发布时间】:2017-07-21 15:39:23
【问题描述】:
我们正面临 Kafka 的问题。我们有一个只有一个分区和一个消费者组中只有一个消费者的主题。消费者已停止一个月。与此同时,生产者正在向该主题发送消息。
当我们再次启动消费者时,它无法消费消息。我假设之前提交的偏移量已经丢失,因此消费者在唤醒时不知道找到起点。
当我们停止并再次启动消费者时,消费者可以接收新消息,但之前发送的所有消息都没有被消费。
偏移是否已损坏? kafka 内部主题偏移量的保留期是否意味着最后提交的偏移量已被删除?
【问题讨论】:
-
嗨@matthias-j-sax,假设我们在偏移管理方面遇到问题,维护偏移的最佳实践是什么,在kafka集群之外维护偏移是否是个好主意,例如RDMS,所以在丢失偏移量的情况下,我们可以从存储在DB中的偏移量重新启动消费者?
-
最简单的事情是更改代理设置增加偏移保留时间。如果将其设置为 INT_MAX ,您将获得多年...应该这样做。如果您确实需要更长的保留时间,您也可以将偏移量存储在任何您想要的位置,例如数据库。但当然,在您自己的代码库中需要维护更多代码。
-
我有点困惑,因为即使我将 offset.retention.minutes 设置为 10 分钟,我也希望某些特定组的偏移量将被删除,因为目前没有活动的消费者组,但是当我监控时记录没有偏移量过期
[2017-03-02 06:57:24,907] INFO [Group Metadata Manager on Broker 1]: Removed 0 expired offsets in 1 milliseconds. (kafka.coordinator.GroupMetadataManager)@MatthiasJ.Sax -
不确定...您等了多长时间?保留时间是有保证的下限,并且没有严格的强制要求立即删除偏移量 - 您还可以配置一个清理间隔。
标签: apache-kafka kafka-consumer-api