Junior — Middle
Kaip Kafka gamintojas pasirenka skirstinį (partition) pranešimo siuntimui?
sobes.tech AI
Atsakymas iš AI
Kafka gamintojas pasirenka dalį (partition), kad siųstų žinutę, remiantis žinutės raktu ir dalijimosi nustatymais. Jei žinutė turi raktą, Kafka naudoja šio rakto maišos funkciją, kad nustatytų konkretų dalį, užtikrinant, kad visi su tuo pačiu raktu žinutės pateks į tą pačią dalį. Jei raktas nėra, gamintojas paprastai paskirsto žinutes cikliškai (round-robin), kad subalansuotų apkrovą.
Pavyzdys Go kalba naudojant sarama biblioteką:
producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
Topic: "my_topic",
Key: sarama.StringEncoder("userID123"), // raktas dalijimuisi
Value: sarama.StringEncoder("žinutės turinys"),
}
partition, offset, err := producer.SendMessage(msg)
Čia, raktas "userID123" bus naudojamas dalies pasirinkimui, kad visi su šiuo raktu žinutės patektų į tą pačią dalį.