Sobes.tech
Junior — Middle

Как избира продюсерът на Kafka раздел (partition) за изпращане на съобщение?

sobes.tech AI

Отговор от AI

Производителят Kafka избира раздел (partition) за изпращане на съобщение въз основа на ключа на съобщението и настройките за партициониране. Ако съобщението има ключ, Kafka използва хеш-функция на този ключ, за да определи конкретен раздел, като гарантира, че всички съобщения с един и същи ключ ще попаднат в един и същи раздел. Ако липсва ключ, производителят обикновено разпределя съобщенията циклично (round-robin) за баланс на натоварването.

Пример на Go с използване на библиотеката sarama:

producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
    Topic: "my_topic",
    Key:   sarama.StringEncoder("userID123"), // ключ за партициониране
    Value: sarama.StringEncoder("payload на съобщението"),
}
partition, offset, err := producer.SendMessage(msg)

Тук ключът "userID123" ще бъде използван за избор на раздел, така че всички съобщения с този ключ да попадат в един и същи раздел.