Sobes.tech
Back to questions
Junior — Middle
84

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

Companies where asked
Сбер КонтактСбер Контакт

Answer from AI

sobes.tech AI

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

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

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

Здесь ключ "userID123" будет использоваться для выбора partition, чтобы все сообщения с этим ключом попадали в один раздел.