Sobes.tech
Назад к вопросам
Senior
4

Как сделать так, чтобы все события по одному заказу попадали в одну партицию Kafka?

Компании, где спрашивали
Lenta Tech

Ответ от нейросети

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),
}

Таким образом, гарантируется, что все события с одинаковым ключом будут в одной партиции, что важно для упорядоченной обработки и консистентности.