Was ist der Sinn von Kafkas Schlüssel/Wert-paar-basierten messaging?
Alle Beispiele von Kafka | Hersteller zeigen die ProducerRecord
's Schlüssel/Wert-paar, wie nicht nur der gleiche Typ (alle Beispiele zeigen <String,String>
), aber die gleichen Wert. Zum Beispiel:
producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i)));
Aber in die Kafka-docs, ich kann nicht scheinen, um herauszufinden, wo der Schlüssel/Wert-Konzept (und die Ihr zugrunde liegenden Zweck/nutzen) erklärt. In der traditionellen messaging (ActiveMQ, RabbitMQ, etc.) Ich habe immer feuerte eine Nachricht zu einem bestimmten Thema/Warteschlange/exchange. Aber Kafka ist der erste broker, der scheint zu verlangen, Schlüssel/Wert-Paare statt nur eine regulare 'ole-string-Nachricht.
Also Frage ich: Was ist der Zweck/die Nützlichkeit der, dass die Produzenten senden KV-Paare?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kafka verwendet die Abstraktion eines verteilten log aus Partitionen. Die Aufteilung einer log-in-Partitionen ermöglicht das scale-out-system.
Schlüssel werden verwendet, um die partition in ein Protokoll, um die Nachricht zu bekommen ist, angehängt. Während der Wert der eigentlichen Nutzdaten der Nachricht. Die Beispiele sind eigentlich nicht sehr "gut" in dieser Richtung; in der Regel hätten Sie einen komplexen Typ mit dem Wert (wie ein Tupel-Typ oder ein JSON oder ähnliches) und würden Sie extrahieren Sie ein Feld als Schlüssel.
Finden Sie unter: http://kafka.apache.org/intro#intro_topics und http://kafka.apache.org/intro#intro_producers
Im Allgemeinen die Schlüssel und/oder Wert kann
null
auch. Wenn der Schlüsselnull
eine zufällige partition wird das ausgewählte. Wenn der Wertnull
es kann haben spezielle "löschen" Semantik im Fall aktivieren Sie die log-Verdichtung anstelle von log-retention-policy für ein Thema (http://kafka.apache.org/documentation#compaction).KStream
undKTable
- siehe hier.gvo
ist auch richtig: die API ermöglicht Ihnen die Nummer der partition explizit.partition
parameter verwendet werden soll, und die Taste wird "ignoriert" werden (oder natürlich, der key wird immer noch geschrieben werden, in das Thema). - Dies ermöglicht es Ihnen, eine benutzerdefinierte Partitionierung, auch wenn Sie Tasten.