Sobes.tech
Junior — Middle
113

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

Сұралған компаниялар
Сбер КонтактСбер Контакт

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, чтобы все сообщения с этим ключом попадали в один раздел.