如何为 kafka 消费者分配 1 个以上的分区

问题描述

我在 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);

解决方法

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


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

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