崩溃后重新启动后,Kafka如何识别组中的使用者

时间:2019-03-19 18:06:43

标签: apache-kafka kafka-consumer-api kafka-producer-api

假设我有两个消费者-一个消费者组中的C1和C2。 在C1和C2都出现之前,有10条关于某个主题的消息。 C1读取前5条消息,然后下降,而C2读取9-10条消息。 C1过一段时间后会回来。现在,Kafka如何识别刚出现的消费者确实是C1,并允许它从最后提交的目标中读取信息,当C1较早在组中注册时它是否保存了一些信息,以便它可以唯一地识别C1。再次备份?

1 个答案:

答案 0 :(得分:1)

偏移量不绑定到实际的Kafka Consumer实例,而是绑定到消费者组。 更准确地说,每个消费者组的每个主题/分区的已提交偏移量存储在__consumer_offsets主题中(这是一个压缩的主题,因此仅保留最新的偏移量)。

在您的情况下,使用者C1一旦启动并再次运行,通常它将开始使用来自该使用者所属的使用者组的最新提交偏移量的数据(不过,这取决于配置-您可以强制其执行以下操作:从头开始)。在您的情况下,C1将开始从第11条消息开始使用消息。