Zookeeper / Kafka如何为消费者保留偏移量?

时间:2018-08-11 21:12:20

标签: apache-kafka kafka-consumer-api

偏移量是主题/分区的属性,还是使用者的属性?

如果这是消费者的财产,是否意味着从同一分区读取的多个消费者可能具有不同的偏移量?

如果一个消费者崩溃了,那该怎么办?当卡夫卡重新上线时,卡夫卡又如何知道与那个消费者打交道呢?大概会生成一个新的客户端ID,因此它不会具有与以前相同的ID。

2 个答案:

答案 0 :(得分:2)

在大多数情况下,这是消费者组的财产。编写使用者时,通常在group.id参数中指定使用者组。该组ID用于从特殊主题__consumer_offsets中的/恢复/存储最新偏移,该偏移直接存储在自身的Kafka集群中。消费者组不仅用于偏移量,而且还可以确保每个消费者组仅从单个客户端使用每个分区。

不过,Kafka给您很大的灵活性-因此,如果需要,您可以将偏移量存储在其他位置,并且可以根据所需条件进行偏移。但是在大多数情况下,遵循消费者群体的概念并将偏移量存储在Kafka中是您可以做的最好的事情。

答案 1 :(得分:1)

Kafka根据let newText = NSMutableAttributedString(attributedString: textView.attributedText) newText.replaceCharacters(in: rangeOfCharactersToReplace, with: newCharacters) textView.attributedText = newText 识别消费者,这是一个消费者财产,每个消费者都应拥有此财产

  

一个唯一字符串,用于标识此消费者所属的消费者组。如果使用者通过使用subscription(topic)或基于Kafka的偏移量管理策略使用组管理功能,则必须具有此属性

进入group.id是一个消费者属性和代理属性,每当消费者从kafka主题消费消息时,它将在下一次开始消费时提交偏移量(这意味着从1到10消耗了该消息列表)从10开始,偏移量可以手动提交或自动提交offset

  

如果为true,则消费者的补偿将在后台定期提交。

并且每个消费者组都有其偏移量,基于该kafka服务器确定新消费者还是旧消费者已重新启动