Sobes.tech
Senior

Hogyan lehet biztosítani, hogy egy rendelés összes eseménye egy Kafka-partícióba kerüljön?

sobes.tech MI

Válasz az MI-től

Annak érdekében, hogy egy rendeléshez tartozó összes esemény ugyanabba a Kafka-partícióba kerüljön, üzenetküldéskor kulcsot (key) kell használni, amely egyértelműen azonosítja a rendelést.

A Kafka a kulcsot hash-függvény segítségével számítja ki a partíciót. Ha ugyanazt a kulcsot (például order_id) használjuk minden eseményhez ugyanabból a rendelésből, akkor azok ugyanabba a partícióba kerülnek.

Példa Go nyelven sarama könyvtárral (népszerű Kafka kliens):

producer.Input() <- &sarama.ProducerMessage{
    Topic: "orders",
    Key:   sarama.StringEncoder(orderID), // orderID — rendelés azonosító
    Value: sarama.StringEncoder(eventData),
}

Így garantálható, hogy ugyanazzal a kulccsal rendelkező összes esemény ugyanabban a partícióban lesz, ami fontos az események sorrendiségének és konzisztenciájának megőrzése érdekében.