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.