Sobes.tech
Junior — Middle

Kafka istehsalçı mesaj göndərmək üçün bölməni necə seçir?

sobes.tech Süni İntellekt

AI-dan cavab

Kafka istehsalçısı, mesajın açarına və bölümləmə ayarlarına əsasən mesaj göndərmək üçün bölmə (partition) seçir. Əgər mesajın açarı varsa, Kafka bu açardan hash funksiyasını istifadə edir və müəyyən bir bölməni təyin edir, beləliklə, eyni açara malik bütün mesajlar eyni bölməyə düşəcək. Əgər açar yoxdursa, istehsalçı adətən yükü balanslaşdırmaq üçün mesajları dövrü (round-robin) ilə paylayır.

Go dilində sarama kitabxanası ilə nümunə:

producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
    Topic: "my_topic",
    Key:   sarama.StringEncoder("userID123"), // bölmə üçün açar
    Value: sarama.StringEncoder("mesaj yükü"),
}
partition, offset, err := producer.SendMessage(msg)

Burada, "userID123" açarı, bu açara malik bütün mesajların eyni bölməyə düşməsini təmin etmək üçün istifadə olunacaq.