Wie wählt der Kafka-Producer die Partition für das Senden einer Nachricht aus?
sobes.tech KI
Antwort von AI
Der Kafka-Produzent wählt eine Partition aus, um eine Nachricht basierend auf dem Nachrichten-Schlüssel und den Partitionierungseinstellungen zu senden. Wenn die Nachricht einen Schlüssel hat, verwendet Kafka eine Hash-Funktion dieses Schlüssels, um die spezifische Partition zu bestimmen, wodurch sichergestellt wird, dass alle Nachrichten mit demselben Schlüssel in die gleiche Partition gelangen. Wenn kein Schlüssel vorhanden ist, verteilt der Produzent die Nachrichten in der Regel zyklisch (Round-Robin), um die Last auszugleichen.
Beispiel in Go mit der Bibliothek sarama:
producer, _ := sarama.NewSyncProducer(brokers, config)
msg := &sarama.ProducerMessage{
Topic: "my_topic",
Key: sarama.StringEncoder("userID123"), // Schlüssel für Partitionierung
Value: sarama.StringEncoder("Nachrichtenpayload"),
}
partition, offset, err := producer.SendMessage(msg)
Hier wird der Schlüssel "userID123" verwendet, um die Partition auszuwählen, sodass alle Nachrichten mit diesem Schlüssel in die gleiche Partition gelangen.