Sobes.tech
Senior

Ako zabezpečiť, aby všetky udalosti jednej objednávky išli do jednej partície Kafka?

sobes.tech AI

Odpoveď od AI

Aby všetky udalosti spojené s jedným objednávkou skončili v jednej partitione Kafka, je potrebné pri odosielaní správ použiť kľúč (key), ktorý jednoznačne identifikuje objednávku.

Kafka používa kľúč na výpočet partition pomocou hashovacej funkcie. Ak pre všetky udalosti jednej objednávky použijete ten istý kľúč (napríklad order_id), tieto udalosti skončia v tej istej partitione.

Príklad v Go s použitím sarama (obľúbený klient Kafka):

producer.Input() <- &sarama.ProducerMessage{
    Topic: "orders",
    Key:   sarama.StringEncoder(orderID), // orderID — identifikátor objednávky
    Value: sarama.StringEncoder(eventData),
}

Tým je zabezpečené, že všetky udalosti s rovnakým kľúčom budú v jednej partitione, čo je dôležité pre zachovanie poradia a konzistenciu.