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,但没有运气。
我也尝试过不同的主题,但没有运气。
2条答案
按热度按时间hwazgwia1#
从Kafka开始,默认的分区器从round-robin改为sticky,它将在整个批处理中使用同一个分区(双关语)。
在我的Kafka版本中,
kafka-console-producer
使用默认的批处理大小16384,所以一旦生成了足够的消息来填充缓冲区,分区就会改变。gdx19jrr2#
如果一个生产者,用相同的键生产消息,那么它保证在同一个分区上生产。所以在你的情况下,如果你想让它被不同的分区使用,那么一定要用不同的键发布它。你需要设置下面的属性。
请参见下面的命令来生成带有密钥的记录。