【问题标题】:How to assign more than 1 partition to a kafka consumer如何为 kafka 消费者分配超过 1 个分区
【发布时间】:2021-07-16 12:24:43
【问题描述】:

我在 c 中创建了 kafka 消费者并创建了一个具有 10 个分区的主题,当我尝试使用消费者读取数据时,它仅从 2 个分区读取,然后不再显示消息。 我尝试使用这两种方法,即订阅和分配,但它们都不起作用。 我应该如何将所有 10 个分区分配给单个消费者,这是将分区分配给消费者的正确方法吗? 我已经使用这个 repo https://github.com/edenhill/librdkafka/blob/master/examples/consumer.c 构建了自定义消费者 并用下面的行修改了上述 repo 的第 173 和 180 行,以便我可以从所有分区中使用。但是还是不行。

for(int partition_number = 0 ; partition_number < 10 ; partition_number) { 
    rd_kafka_topic_partition_list_add(sub_list,topic[i],partition_number); 
}                                   
rd_kafka_assign(consumer,sub_list);

【问题讨论】:

  • 实际上我尝试使用 rd kafka_topic partition_list add() 添加分区,但这也只是从 2 个分区而不是从全部 10 个分区中读取。
  • @Suraj 请edit您的问题添加澄清或要求的信息。不要为此目的使用 cmets。根据对代码的模糊描述,很难回答您的问题。您应该以minimal reproducible example 的形式向问题中添加一些示例代码。
  • 十个分区都有数据吗?
  • 是的数据在所有10个分区中

标签: c apache-kafka kafka-consumer-api librdkafka


【解决方案1】:

请尝试在不更改其逻辑的情况下按原样运行您的示例,它将subscribe() 与消费者组一起使用,您对assign 函数而不是订阅的更改会破坏逻辑...请更新使用后发生的情况确切的例子,只需更改主题名称。 使用subscribe(),它会忽略分区并使用消费者组和kafka控制逻辑订阅整个主题


这是@edenhill 分配器测试,您可能还想查看该代码

https://github.com/edenhill/librdkafka/blob/master/tests/0051-assign_adds.c

【讨论】:

  • 谢谢它工作正常,但在这之间它给消费者没有更多的消息错误。
  • 如果答案对你有用,你应该+1,关于没有更多的消息,请发布新的问题与信息
猜你喜欢
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2018-02-05
  • 2021-01-26
  • 2017-01-04
相关资源
最近更新 更多