使用 kafka-go 和循环平衡器时,数据始终进入分区 0

问题描述 投票:0回答:1

我正在使用 kafka-go 库将消息写入 Kafka。我正在使用循环平衡器,但数据始终转到分区 0。我尝试忽略所有消息的分区字段,但数据仍然转到分区 0。我做错了什么?

func main() {
    var logger = logger.Logger()

    w := kafka.Writer{
        Addr:     kafka.TCP("localhost:9092", "localhost:9093", "localhost:9094"),
        Balancer: &kafka.RoundRobin{},
    }
    messages := []kafka.Message{
        {
            Topic: "first-topic",
            Key:   []byte("test"),
            Value: []byte("value"),
        },
        {
            Topic: "second-topic",
            Key:   []byte("test2"),
            Value: []byte("value2"),
        },
    }
    for i := 0; i < len(messages); i++ {
        w.WriteMessages(context.Background(), messages[i])
    }

    if err := w.Close(); err != nil {
        logger.Fatal().Msg("failed to close writer:")
    }

}
go apache-kafka
1个回答
0
投票

循环分区仅在消息的键未定义时发生。否则,分区是根据该键的散列计算的(test 和 test2 可能会散列类似以到达同一分区)

© www.soinside.com 2019 - 2024. All rights reserved.