tutorial topic quickstart kafka español create apache-kafka message-queue messaging key-value messagebroker

apache-kafka - topic - kafka apache quickstart



¿Cuál es el propósito de la mensajería basada en pares clave/valor de Kafka? (1)

Todos los examples de Kafka | producers muestran que el par clave / valor de ProducerRecord no solo es del mismo tipo (todos los ejemplos muestran <String,String> ), sino que tienen el mismo valor . Por ejemplo:

producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i)));

Pero en los documentos de Kafka, parece que no puedo encontrar dónde se explica el concepto clave / valor (y su propósito / utilidad subyacente). En los mensajes tradicionales (ActiveMQ, RabbitMQ, etc.) siempre he activado un mensaje en un tema / cola / intercambio en particular. Pero Kafka es el primer intermediario que parece necesitar pares clave / valor en lugar de solo un mensaje regular de cadena.

Entonces pregunto: ¿Cuál es el propósito / utilidad de exigir a los productores que envíen pares de KV?


Kafka usa la abstracción de un registro distribuido que consiste en particiones . La división de un registro en particiones permite escalar el sistema.

Las claves se utilizan para determinar la partición dentro de un registro al que se anexa un mensaje. Mientras que el valor es la carga real del mensaje. Los ejemplos en realidad no son muy "buenos" con respecto a esto; por lo general, tendría un tipo complejo como valor (como un tipo de tupla o un JSON o similar) y extraería un campo como clave.

Ver: http://kafka.apache.org/intro#intro_topics y http://kafka.apache.org/intro#intro_producers

En general, la clave y / o el valor también pueden ser null . Si la clave es null una partición aleatoria será la seleccionada. Si el valor es null , puede tener una semántica especial de "eliminación" en caso de que habilite la compactación de registros en lugar de la política de retención de registros para un tema ( http://kafka.apache.org/documentation#compaction ).