假设我有两个消费者- C1和C2在一个消费者组中。在C1和C2出现之前,有10条关于一个主题的消息。当C2读取消息9-10时,C1读取前5条消息并关闭。C1会在一段时间后返回。现在,卡夫卡如何识别刚刚出现的消费者确实是C1,并允许它从上一次提交的offest中读取,当C1之前在组中注册时,它是否保存了一些信息,以便在重新启动时可以唯一地识别C1?
发布于 2019-03-20 02:23:21
Offset不绑定实际的Kafka Consumer实例,而是绑定到消费组。更准确地说,每个使用者组的每个主题/分区的提交偏移量存储在__consumer_offsets topic中(这是一个压缩的主题,因此只保留最新的偏移量)。
在您的例子中,一旦消费者C1重新启动并运行,它通常会从消费者所属的消费者组的最新提交偏移量开始使用数据(这取决于配置-您可以强制它从头开始)。在您的示例中,C1将从第11条消息开始使用消息。
https://stackoverflow.com/questions/55247404
复制相似问题