Sobes.tech
Senior

Kako osigurati da svi događaji za jednu narudžbu idu u jednu particiju Kafka?

sobes.tech АИ

Одговор од АИ

Да би се гаранисало да сва сва догађаја у вези са једном поруџбином стигну у једну партицију Kafka, потребно је користити кључ (key) приликом слања порука, који јасно идентификује поруџбину.

Kafka користи кључ за израчунавање партиције преко хеш-функције. Ако за све догађаје једне поруџбине користите исти кључ (нпр., order_id), они ће се налазити у истој партицији.

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

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

На овај начин, гарантује се да ће сви догађаји са истим кључем бити у истој партицији, што је важно за редоследну обраду и конзистентност.