Sobes.tech
Senior

Bir sifarişə aid bütün hadisələrin Kafka-da bir partiyaya düşməsini necə təmin etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Kafka-da bir sifarişlə əlaqəli bütün hadisələrin eyni partisyona düşməsini təmin etmək üçün, mesajların göndərilməsi zamanı açar (key) istifadə etmək lazımdır; bu açar sifarişi dəqiq müəyyən edir.

Kafka açarı hash funksiyası vasitəsilə partiyanı hesablayır. Əgər bir sifarişin bütün hadisələri üçün eyni açar (məsələn, order_id) istifadə olunarsa, onlar eyni partiyaya düşəcək.

Go dilində sarama istifadə edərək nümunə (populyar Kafka müştərisi):

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

Bu şəkildə, eyni açara malik bütün hadisələrin eyni partiyada olacağı təmin edilir, bu isə ardıcıllıqla işləmə və tutarlılıq üçün vacibdir.