Junior — Middle
Jak producent Kafka wybiera partycję do wysłania wiadomości?
sobes.tech AI
Odpowiedź od AI
Producent Kafka wybiera partycję do wysłania wiadomości na podstawie klucza wiadomości i ustawień partycjonowania. Jeśli wiadomość ma klucz, Kafka używa funkcji hash tego klucza, aby określić konkretną partycję, zapewniając, że wszystkie wiadomości z tym samym kluczem trafią do tej samej partycji. Jeśli klucz jest nieobecny, producent zazwyczaj rozdziela wiadomości cyklicznie (round-robin) w celu zrównoważenia obciążenia.
Przykład w Go z użyciem biblioteki sarama:
producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
Topic: "my_topic",
Key: sarama.StringEncoder("userID123"), // klucz do partycjonowania
Value: sarama.StringEncoder("ładunek wiadomości"),
}
partition, offset, err := producer.SendMessage(msg)
Tutaj klucz "userID123" będzie używany do wyboru partycji, tak aby wszystkie wiadomości z tym kluczem trafiały do tej samej partycji.