Sobes.tech
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.