当前位置: 首页 > 知识库问答 >
问题:

如何为kafka用户分配多个分区

冯星剑
2023-03-14

我已经在c中创建了kafka消费者,并创建了一个具有10个分区的主题,当我尝试使用消费者读取数据时,它仅从2个分区读取,然后说没有更多的消息。我尝试使用这两种方法,即订阅和分配,但它们都不起作用。我应该如何将所有10个分区分配给单个使用者,这是将分区分配给使用者的正确方法吗?我已经使用此存储库构建了自定义消费者 https://github.com/edenhill/librdkafka/blob/master/examples/consumer.c,并修改了上面存储库的行号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);

共有1个答案

百里朝
2023-03-14

请尝试在不改变其逻辑的情况下运行您的示例,它对使用者组使用< code>subscribe(),您对< code>assign函数而不是subscribe的更改违反了逻辑...请更新使用确切的例子后会发生什么,只是改变主题名称。通过使用< code>subscribe(),它会忽略分区,并通过消费者组和kafka控制逻辑订阅整个主题

这是@edenhill assigner测试,您可能也想看看代码

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

 类似资料:
  • TL;DR;我试图理解一个被分配了多个分区的单个使用者是如何处理reach分区的消费记录的。 例如: 在移动到下一个分区之前,会完全处理一个分区。 每次处理每个分区中的可用记录块。 从第一个可用分区处理一批N条记录 以循环旋转方式处理来自分区的N条记录 我找到了或分配程序的配置,但这只决定了使用者如何分配分区,而不是它如何从分配给它的分区中使用。 我开始深入研究KafkaConsumer源代码,#

  • 我有一个将消息写入主题/分区的生产者。为了保持顺序,我希望使用单个分区,我希望12个使用者读取来自这个分区的所有消息(没有使用者组,所有消息都应该发送给所有使用者)。这是可以实现的吗?我读过一些论坛,每个分区只有一个用户可以阅读。

  • 我读了很多文章,但没有找到如何使用Spring Integration Kafka配置具有多分区主题(在运行时创建主题)的Producer。 我正在使用github链接来理解并为我的应用程序配置kafka。 请提供解决方案 还有一点,KafKaheader.MessageKey的用途是什么。 我得到空指针异常。下面是提及日志: 谢谢

  • 问题内容: 我正在使用React使用渲染多个数据。 如何禁用列表中的单击按钮? 这是我的代码: 使用不起作用…我认为我无法添加状态,因为有多个按钮。 问题答案: 您应该使用而不是ref,并且是的,您需要多个ref,一个数组应该很好 根据文档: React支持可以附加到任何组件的特殊属性。ref属性具有一个功能,并且在 安装或卸载组件后立即执行。 在HTML元素上使用ref属性时,会 接收基础DOM

  • 我的消费者并不是每次都能收到信息。我有3个代理(3个服务器)的Kafka集群,有3个主题和复制因子3的分区。 我有Java中的消费者,我将最大轮询记录设置在50000获取字节上,配置在50MB上。应用程序每分钟都进行轮询。当我向主题“my-topic”发送10条消息时,consumer不会给我所有的消息,而是只给我其中的一部分,其余的将在下一次运行中给我。消息是在applicatin睡眠期间由脚本

  • 我们正在使用Spring kafka来消费消息。我们已经为每个分区创建了接收消息的接收器。现在我们需要多个接收者从单个分区接收消息。 对于例如。假设我们有一个分区0。目前,我们只有一个接收器(接收器1)从这个分区接收消息。现在我想为同一个分区(分区0)添加另一个接收器(接收器2)。 因此,如果生产者向这个分区发送100条消息,接收器1应该接收50条消息,其余50条消息应该在接收器2中接收。我不希望