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.