Sobes.tech
Junior — Middle

Cum alege producătorul Kafka partiția pentru trimiterea unui mesaj?

sobes.tech AI

Răspuns de la AI

Producătorul Kafka alege o partiție pentru a trimite un mesaj pe baza cheii mesajului și a setărilor de partiționare. Dacă mesajul are o cheie, Kafka folosește o funcție hash a acestei chei pentru a determina o partiție specifică, asigurând că toate mesajele cu aceeași cheie vor ajunge în aceeași partiție. Dacă nu există cheie, producătorul distribuie de obicei mesajele ciclic (round-robin) pentru a echilibra sarcina.

Exemplu în Go folosind biblioteca sarama:

producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
    Topic: "my_topic",
    Key:   sarama.StringEncoder("userID123"), // cheie pentru partiționare
    Value: sarama.StringEncoder("payload-ul mesajului"),
}
partition, offset, err := producer.SendMessage(msg)

Aici, cheia "userID123" va fi folosită pentru a selecta partiția, astfel încât toate mesajele cu această cheie vor ajunge în aceeași partiție.