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