Kafka没有向其他分区发送消息

eh57zj3b  于 2022-12-26  发布在  Apache
关注(0)|答案(2)|浏览(198)

Apache Kafka安装在Mac(Intel)上。单个本地生产者和单个本地消费者。创建具有3个分区和1个复制因子的1个主题:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic animal --partitions 3 --replication-factor 1

生产商代码:

bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic animal

生产商信息:

>alligator
>crocodile
>tiger

当生成消息时(通过producer-console手动生成),所有消息都进入同一个分区。它们不应该分布在多个分区中吗?
我尝试了3条记录(如上所述),但它们只被发送到1个分区。在tmp/kafka-logs/topic-0/00**00.log中检查topic- 中的其他日志为空。
我试了几十张唱片,但都没成功。
我甚至在“config/ www.example.com”中增加了默认分区配置(num.partitions=3)server.properties,但没有运气。
我也尝试过不同的主题,但没有运气。

hwazgwia

hwazgwia1#

从Kafka开始,默认的分区器从round-robin改为sticky,它将在整个批处理中使用同一个分区(双关语)。
在我的Kafka版本中,kafka-console-producer使用默认的批处理大小16384,所以一旦生成了足够的消息来填充缓冲区,分区就会改变。

gdx19jrr

gdx19jrr2#

如果一个生产者,用相同的键生产消息,那么它保证在同一个分区上生产。所以在你的情况下,如果你想让它被不同的分区使用,那么一定要用不同的键发布它。你需要设置下面的属性。

--property parse.key=true

请参见下面的命令来生成带有密钥的记录。

kafka-console-producer --broker-list 127.0.0.1:9092 --topic first_topic --property parse.key=true --property key.separator=,

> key1,value1
> key2,value2

相关问题