默认情况下,kafka将自动分配分区;如果您在同一个组中有4个消费者,他们最终将每人获得一个分区。有属性可以配置kafka,因此在您调出消费者时,它不会立即进行分配。
您也可以自己分配分区。
用
public ContainerProperties(TopicPartitionInitialOffset... topicPartitions)
如果您自己构建容器,或者
@KafkaListener(id = "baz", topicPartitions = @TopicPartition(topic = "${topic}",
partitions = "${partition}"))
如果您使用的是@KafkaListener
。
我有一个场景,我已经在不同的节点上部署了4个Kafka消费者实例。我的主题有4个分区。现在,我想配置消费者,使他们都从主题的不同分区获取。 我知道一个事实,如果消费者来自同一个消费者组,他们会确保分区被平分。但在我的情况下,他们不在同一组。
我有一个将消息写入主题/分区的生产者。为了保持顺序,我希望使用单个分区,我希望12个使用者读取来自这个分区的所有消息(没有使用者组,所有消息都应该发送给所有使用者)。这是可以实现的吗?我读过一些论坛,每个分区只有一个用户可以阅读。
我有一个Kafka主题,目前有3个分区。我希望我的消费者从同一个分区读取,但每条消息都应该以循环方式发送给不同的消费者。有可能实现吗?
TL;DR;我试图理解一个被分配了多个分区的单个使用者是如何处理reach分区的消费记录的。 例如: 在移动到下一个分区之前,会完全处理一个分区。 每次处理每个分区中的可用记录块。 从第一个可用分区处理一批N条记录 以循环旋转方式处理来自分区的N条记录 我找到了或分配程序的配置,但这只决定了使用者如何分配分区,而不是它如何从分配给它的分区中使用。 我开始深入研究KafkaConsumer源代码,#
null 我在这一页上读到以下内容: 使用者从任何单个分区读取,允许您以与消息生成类似的方式扩展消息消耗的吞吐量。 也可以将使用者组织为给定主题的使用者组-组内的每个使用者从唯一分区读取,并且组作为一个整体使用来自整个主题的所有消息。 如果使用者多于分区,则某些使用者将空闲,因为它们没有可从中读取的分区。 如果分区多于使用者,则使用者将从多个分区接收消息。 如果使用者和分区的数量相等,则每个使用者
有没有任何选项或配置可以方便单个Kafka消费者同时消费来自两个不同集群的消息?在创建生产者和消费者时,我将两个集群都提到逗号分隔。我一直在观察消费者只消费来自单个集群的消息。 请参阅下面的说明:消费者C1被配置为监听集群:集群-1:Zooker-1 with Broker-1集群-2:Zooker-2 with Broker-2 我正在寻找一种解决方案,其中消费者C1可以同时消费来自集群1和集群