Sobes.tech
Senior

Как да направим така, че всички събития по една поръчка да попадат в една партиция на Kafka?

sobes.tech AI

Отговор от AI

За да се гарантира, че всички събития за една поръчка попадат в една и съща партиция на Kafka, трябва да използвате ключ (key) при изпращане на съобщения, който ясно идентифицира поръчката.

Kafka използва ключа за изчисляване на партицията чрез хеш-функция. Ако за всички събития на една поръчка се използва един и същи ключ (например, order_id), те ще попаднат в една и съща партиция.

Пример на Go с използване на sarama (популярен Kafka клиент):

producer.Input() <- &sarama.ProducerMessage{
    Topic: "orders",
    Key:   sarama.StringEncoder(orderID), // orderID — идентификатор на поръчката
    Value: sarama.StringEncoder(eventData),
}

По този начин се гарантира, че всички събития с един и същи ключ ще бъдат в една и съща партиция, което е важно за подредената обработка и консистентност.