Senior
Jak zajistit, aby všechny události jednoho objednávky šly do jedné partition Kafka?
sobes.tech AI
Odpověď od AI
Aby všechny události spojené s jedním objednávkou skončily v jedné partitionu Kafka, je třeba při odesílání zpráv použít klíč (key), který jednoznačně identifikuje objednávku.
Kafka používá klíč k výpočtu partition pomocí hashovací funkce. Pokud pro všechny události jedné objednávky použijete stejný klíč (například order_id), tyto události skončí ve stejné partitionu.
Příklad v Go s použitím sarama (oblí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 zajištěno, že všechny události se stejným klíčem budou ve stejné partitionu, což je důležité pro zachování pořadí a konzistence.