首页 > 解决方案 > 具有自动提交功能的 KafkaConsumer CPP API assign()

问题描述

我有一个 CPP Kafka 消费者,它使用 assign 来指定分区。因为我使用 assign() 分配分区,而不是使用我很好的 subscribe() 。正因为如此,我的重新平衡没有发生,我也很好。

问题 1:我想了解自动提交在这里是如何工作的。假设是否有 2 个消费者都具有相同的 groupId。他们俩都将获得所有更新,但有人可以帮助我了解提交将如何发生吗?如果只有一个消费者,则使用消费者组 ID 进行提交。但它如何与 2 个消费者一起工作。在这些情况下,我也没有看到任何提交失败。

问题 2:我分配分区时 rd_kafka_offsets_store 是如何工作的。他们进展顺利还是我应该在这些情况下使用订阅?

标签: apache-kafkakafka-consumer-apiautocommitlibrdkafka

解决方案


  1. 具有相同 group.id 的两个非订阅消费者将在没有关联或冲突解决的情况下为其分配的分区提交偏移量,如果为他们分配了相同的分区,他们将覆盖彼此的提交。使用唯一的 group.id 或订阅主题。
  2. rd_kafka_offsets_store()assign()or的工作方式相同subscribe(),即通过存储(在内存中)偏移量以在下一次自动或手动提交时提交。

推荐阅读