我正在使用 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:")
}
}
循环分区仅在消息的键未定义时发生。否则,分区是根据该键的散列计算的(test 和 test2 可能会散列类似以到达同一分区)