Back to questions
Senior
5
Как сделать так, чтобы все события по одному заказу попадали в одну партицию Kafka?
Companies where asked
Lenta Tech
Answer from AI
sobes.tech AI
Чтобы все события по одному заказу попадали в одну партицию Kafka, нужно использовать ключ (key) при отправке сообщений, который однозначно идентифицирует заказ.
Kafka использует ключ для вычисления партиции через хеш-функцию. Если для всех событий одного заказа использовать одинаковый ключ (например, order_id), то они попадут в одну и ту же партицию.
Пример на Go с использованием sarama (популярный Kafka клиент):
producer.Input() <- &sarama.ProducerMessage{
Topic: "orders",
Key: sarama.StringEncoder(orderID), // orderID — идентификатор заказа
Value: sarama.StringEncoder(eventData),
}
Таким образом, гарантируется, что все события с одинаковым ключом будут в одной партиции, что важно для упорядоченной обработки и консистентности.