Sobes.tech
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.