Kafka生产者未在分区上分发消息

时间:2019-06-28 14:13:03

标签: go apache-kafka kafka-producer-api confluent

我正在创建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中。

在这种情况下怎么了?

1 个答案:

答案 0 :(得分:2)

具有相同密钥的消息将添加到同一分区。如果不是这种情况,请尝试包含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)

    }