Sobes.tech
Junior — Middle

Hogyan választja ki a Kafka producer a partíciót az üzenet küldéséhez?

sobes.tech MI

Válasz az MI-től

A Kafka producere kiválaszt egy partíciót az üzenet küldéséhez az üzenet kulcsa és a partíciózási beállítások alapján. Ha az üzenetnek van kulcsa, a Kafka egy hash-függvényt használ erre a kulcsra, hogy meghatározza a konkrét partíciót, biztosítva, hogy minden ugyanazzal a kulccsal rendelkező üzenet ugyanabba a partícióba kerüljön. Ha nincs kulcs, a producer általában körforgásos (round-robin) módon osztja el az üzeneteket a terhelés kiegyensúlyozása érdekében.

Példa Go nyelven a sarama könyvtár használatával:

producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
    Topic: "my_topic",
    Key:   sarama.StringEncoder("userID123"), // kulcs a partícióhoz
    Value: sarama.StringEncoder("üzenet payload"),
}
partition, offset, err := producer.SendMessage(msg)

Itt a "userID123" kulcsot fogják használni a partíció kiválasztásához, hogy minden ugyanazzal a kulccsal rendelkező üzenet ugyanabba a partícióba kerüljön.