重新启动后,Kafka Consumer不消耗最后提交的偏移量

时间:2020-10-02 01:48:12

标签: apache-kafka kafka-consumer-api kafka-python strimzi confluent-kafka-python

我有一个根据订阅主题进行的消费者投票。它消耗每条消息并进行一些处理(在几秒钟内),推送到不同的主题并提交偏移。

总共有5000条消息,

重启前-消耗了2900条消息和已提交的偏移量

重启后-从偏移量0开始消耗。

即使使用相同的使用者组创建了使用者,它仍开始处理偏移量为0的消息。

kafka版本(strimzi)> 2.0.0 kafka-python == 2.0.1

1 个答案:

答案 0 :(得分:0)

我们不知道您的主题中有多少个分区,但是当在同一个使用者组中创建使用者时,他们将使用来自不同分区的记录(我们不能在其中有两个使用者)消费来自同一分区的消费者组,如果您添加消费者,则组协调器将执行重新平衡的过程,以将每个消费者重新分配到特定分区。

我认为偏移量0来自属性auto.offset.reset,可以是:

  • latest:从日志中的最新偏移量开始
  • earliest从最早的记录开始。
  • none:在没有现有偏移数据时引发异常。

但是只有当您的消费者组没有提交有效的偏移量时,此属性才会启动。

注意事项:主题中的记录具有保留期 log.retention.ms属性,因此当您处理日志中的第一条记录时,可以删除最新消息。

问题:当您想使用一个主题中的消息并处理数据并将其写入另一个主题时,为什么不使用Kafka Streaming?