Quel est le but de Kafka est une paire clé/valeur de messagerie?
Tous les exemples de Kafka | les producteurs montrer la ProducerRecord
's la paire valeur/clé non seulement comme étant du même type (tous les exemples montrent <String,String>
), mais le même valeur. Par exemple:
producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i)));
Mais dans le Kafka docs, je n'arrive pas à trouver où est la clé/valeur de concept (et de son but sous-jacent/utilitaire) est expliqué. Dans la messagerie classique (ActiveMQ, RabbitMQ, etc.) J'ai toujours tiré un message à un sujet particulier/file/exchange. Mais Kafka est le premier courtier qui semble avoir besoin de paires clé/valeur au lieu de seulement un regulare 'ole de la chaîne de message.
Alors je vous le demande: Quel est le but/l'utilité d'exiger que les producteurs envoyer KV paires?
Vous devez vous connecter pour publier un commentaire.
Kafka utilise l'abstraction d'un système distribué journal qui se compose de partitions. Fractionnement d'un journal en partitions permet de faire évoluer le système.
Clés sont utilisés pour déterminer la partition dans un journal pour lequel un message est ajouté. Alors que la valeur est la charge utile du message. Les exemples sont en fait pas très "bon" à cet égard; habituellement, vous devez avoir un type complexe (comme un tuple de type ou d'un JSON ou autre) et vous permet d'extraire d'un champ comme clé.
Voir: http://kafka.apache.org/intro#intro_topics et http://kafka.apache.org/intro#intro_producers
En général la clé et/ou la valeur peut être
null
, trop. Si la clé estnull
aléatoires de la partition sélectionnée. Si la valeur estnull
il peut spéciales "supprimer" de la sémantique dans le cas où vous activer le journal-le compactage au lieu de log-stratégie de rétention pour un sujet (http://kafka.apache.org/documentation#compaction).KStream
etKTable
- voir ici.gvo
est aussi correct: l'API vous permet de spécifier le numéro de la partition explicitement.partition
paramètre, il sera utilisé, et la clé sera "ignoré" (ou bien sûr, la clé sera toujours écrit dans le sujet). -- Cela vous permet d'avoir un partitionnement personnalisé, même si vous avez les clés.