Sobes.tech
Senior

Kaip užtikrinti, kad visi užsakymo įvykiai patektų į vieną Kafka partition?

sobes.tech AI

Atsakymas iš AI

Kad visi įvykiai, susiję su viena užsakymu, patektų į tą pačią Kafka dalį, būtina naudoti raktą (key) siunčiant žinutes, kuris vienareikšmiškai identifikuoja užsakymą.

Kafka naudoja raktą, norėdama apskaičiuoti dalį naudodama maišos funkciją. Jei visiems vieno užsakymo įvykiams naudojamas tas pats raktas (pvz., order_id), jie pateks į tą pačią dalį.

Pavyzdys Go kalba su sarama (populiarus Kafka klientas):

producer.Input() <- &sarama.ProducerMessage{
    Topic: "orders",
    Key:   sarama.StringEncoder(orderID), // orderID — užsakymo identifikatorius
    Value: sarama.StringEncoder(eventData),
}

Taip užtikrinama, kad visi įvykiai su ta pačia raktų reikšme bus toje pačioje dalyje, kas yra svarbu tvarkingo apdorojimo ir nuoseklumo užtikrinimui.