Sobes.tech
Senior

Cum să faci ca toate evenimentele unui comand să ajungă într-o singură partiție Kafka?

sobes.tech AI

Răspuns de la AI

Pentru ca toate evenimentele legate de o comandă să ajungă într-o singură partiție Kafka, trebuie să folosiți o cheie (key) la trimiterea mesajelor, care identifică în mod unic comanda.

Kafka folosește cheia pentru a calcula partiția printr-o funcție hash. Dacă pentru toate evenimentele unei comenzi se folosește aceeași cheie (de exemplu, order_id), acestea vor ajunge în aceeași partiție.

Exemplu în Go cu sarama (client Kafka popular):

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

Astfel, se garantează că toate evenimentele cu aceeași cheie vor fi în aceeași partiție, ceea ce este important pentru procesarea în ordine și coerență.