Sobes.tech
Senior

Ինչպե՞ս ապահովել, որ բոլոր իրադարձությունները մեկ պատվերի համար մտնեն մեկ Kafka բաժնում։

sobes.tech AI

Պատասխան AI-ից

Որպեսզի բոլոր իրադարձությունները մեկ պատվերի վերաբերյալ, ընկնեն նույն Kafka բաժնում, անհրաժեշտ է ուղարկելու ժամանակ օգտագործել բանալի (key), որը հստակորեն նույնականացնում է պատվերը:

Kafka-ն օգտագործում է բանալին հեշ-ֆունկցիայի միջոցով բաժնետոմսը հաշվարկելու համար: Եթե բոլոր իրադարձությունների համար նույն բանալին (օրինակ, order_id) օգտագործվի, ապա դրանք կհայտնվեն նույն բաժնում:

Go լեզվով sarama (հայտնի Kafka հաճախորդ) օրինակով:

producer.Input() <- &sarama.ProducerMessage{
    Topic: "orders",
    Key:   sarama.StringEncoder(orderID), // orderID — պատվերի նույնականացուցիչ
    Value: sarama.StringEncoder(eventData),
}

Այսպիսով, երաշխավորվում է, որ նույն բանալին ունեցող բոլոր իրադարձությունները կլինեն նույն բաժնում, ինչը կարևոր է հերթական մշակման և համահունչության համար։