Kafka 不向其他分区发送消息

Pra*_*esh 1 apache-kafka kafka-producer-api kafka-topic kafka-partition

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

bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic animal --partitions 3 --replication-factor 1
Run Code Online (Sandbox Code Playgroud)

生产者代码:

bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic animal
Run Code Online (Sandbox Code Playgroud)

制作人留言:

>alligator
>crocodile
>tiger
Run Code Online (Sandbox Code Playgroud)

生成消息时(通过生产者控制台手动),所有消息都会进入同一个分区。它们不应该跨分区分布吗?

我尝试过 3 条记录(如上所述),但它们仅发送到 1 个分区。在 tmp/kafka-logs/topic-0/00** 00.log 中检查 topic- 中的其他日志为空。

我尝试过几十条记录,但没有成功。

我什至在“config/server.properties”中增加了默认分区配置(num.partitions=3),但没有成功。

我也尝试过不同的主题,但没有运气。

Cos*_*atu 8

从 kafka 2.4 开始,默认分区程序从 round-robin 更改为Sticky,这将在整个批次中坚持相同的分区(双关语)。

在我的 kafka 版本中,kafka-console-producer使用的默认批处理大小为 16384,因此一旦生成足够的消息来填充该缓冲区,分区就会发生变化。