unidos robert productor hollywood famosos estadounidense estados directores director cineasta cine actuales apache-kafka kafka-consumer-api

apache kafka - robert - Si se requiere clave como parte del envío de un mensaje en kafka



directores de cine famosos actuales (1)

KeyedMessage<String, byte[]> keyedMessage = new KeyedMessage<String, byte[]>(request.getRequestTopicName(),SerializationUtils.serialize(message)); producer.send(keyedMessage);

Actualmente, estoy enviando mensajes sin mantener ninguna clave como parte de un mensaje con clave, ¿seguirá funcionando con delete.retention.ms? ¿Necesito enviar la clave como parte del mensaje? ¿Es bueno hacer esta clave como parte del mensaje?


Las claves son principalmente útiles / necesarias si requiere un pedido fuerte de una clave y está desarrollando algo así como una máquina de estado. Si necesita que los mensajes con la misma clave (por ejemplo, una identificación única) siempre se vean en el orden correcto, adjuntar una clave a los mensajes garantizará que los mensajes con la misma clave siempre vayan a la misma partición en un tema. Kafka garantiza el orden dentro de una partición, pero no a través de las particiones de un tema, por lo que alternativamente no proporciona una clave, lo que dará como resultado la distribución por turnos entre las particiones, no mantendrá dicho orden.

En el caso de una máquina de estados, las claves se pueden usar con log.cleaner.enable para deduplicar las entradas con la misma clave. En ese caso, Kafka supone que su aplicación solo se preocupa por la instancia más reciente de una clave determinada y el limpiador de logs elimina los duplicados anteriores de una clave determinada solo si la clave no es nula. Esta forma de compactación de registros está controlada por la propiedad log.cleaner.delete.retention y requiere claves.

Alternativamente, la propiedad más común log.retention.hours , que está habilitada de forma predeterminada, funciona borrando segmentos completos del registro que están desactualizados. En este caso, no es necesario proporcionar las claves. Kafka simplemente eliminará trozos del registro que son más antiguos que el período de retención dado.

Eso es todo, si ha habilitado la compactación de registros o requiere un orden estricto para los mensajes con la misma clave, entonces definitivamente debe usar claves. De lo contrario, las claves nulas pueden proporcionar una mejor distribución y evitar posibles problemas de detección de puntos calientes en los casos en que algunas claves pueden aparecer más que otras.