Kafka生成器未在分区上分发消息

b5lpy0ml  于 2022-11-21  发布在  Apache
关注(0)|答案(2)|浏览(191)

我 在 创作 Kafka 的 题目 如下 :

kafka-topics --create --zookeeper xx.xxx.xx:2181 --replication-factor 2 --partitions 200 --topic test6 --config retention.ms=900000

中 的 每 一 个
然后 使用 golang 使用 以下 库 生成 消息 :

"gopkg.in/confluentinc/confluent-kafka-go.v1/kafka"

格式
生成 器 配置 如下 所 示 :

for _, message := range bigslice {

    topic := "test6"
        p.Produce(&kafka.Message{
            TopicPartition: kafka.TopicPartition{Topic: &topic},
            Value:          []byte(message),
        }, nil)

        }

格式
我 发送 了 超过 20 万 条 消息 , 但 它们 都 在 分区 0 中 。
在 这种 情况 下 会 出 什么 问题 呢 ?

oyxsuwqo

oyxsuwqo1#

将具有相同键的消息添加到同一分区。如果不是这种情况,请尝试包含Partition: kafka.PartitionAny

for _, message := range bigslice {

    topic := "test6"
        p.Produce(&kafka.Message{
            TopicPartition: kafka.TopicPartition{Topic: &topic, Partition: kafka.PartitionAny},
            Value: []byte(message),
        }, nil)

    }
jm81lzqq

jm81lzqq2#

你在生成的时候没有提供密钥,所以它会转到同一个分区。我建议你至少读一下这个https://medium.com/event-driven-utopia/understanding-kafka-topic-partitions-ae40f80552e8

相关问题