Saltar al contenido

¿Cómo puedo enviar mensajes grandes con Kafka (más de 15 MB)?

Solución:

Necesita ajustar tres (o cuatro) propiedades:

  • Lado del consumidor:fetch.message.max.bytes : esto determinará el tamaño más grande de un mensaje que puede obtener el consumidor.
  • Lado del corredor: replica.fetch.max.bytes – esto permitirá que las réplicas en los intermediarios envíen mensajes dentro del clúster y se asegure de que los mensajes se replican correctamente. Si es demasiado pequeño, el mensaje nunca se replicará y, por lo tanto, el consumidor nunca verá el mensaje porque el mensaje nunca se confirmará (se replicará por completo).
  • Lado del corredor: message.max.bytes – este es el tamaño más grande del mensaje que puede recibir el corredor de un productor.
  • Lado del corredor (por tema): max.message.bytes – este es el tamaño más grande del mensaje que el corredor permitirá que se agregue al tema. Este tamaño está validado antes de la compresión. (Por defecto es el del corredor message.max.bytes.)

Descubrí por las malas el número 2: no recibe NINGUNA excepción, mensaje o advertencia de Kafka, así que asegúrese de considerar esto cuando envíe mensajes grandes.

Se requieren cambios menores para Kafka 0.10 y el nuevo consumidor en comparación con la respuesta del hombre riendo:

  • Agente: Sin cambios, aún necesita aumentar las propiedades message.max.bytes y replica.fetch.max.bytes. message.max.bytes tiene que ser igual o menor replica.fetch.max.bytesque
  • . max.request.size Productor: Incrementar
  • para enviar el mensaje más grande. max.partition.fetch.bytes Consumidor: Incrementar

para recibir mensajes más grandes. message.max.bytesreplica.fetch.max.bytes

Lea los comentarios para obtener más información sobre

<=

La idea es enviar el mismo tamaño de mensaje desde Kafka Producer a Kafka Broker y luego ser recibido por Kafka Consumer ie Productor de Kafka -> Agente de Kafka -> Consumidor de KafkaSuponga que si el requisito es enviar 15 MB de mensaje, entonces el Productor , los Corredory el

Consumidor , los tres deben estar sincronizados. Productor Kafka envía 15 MB -> Agente de Kafka Permite / almacena 15 MB ->

Consumidor de Kafka

recibe 15 MB

message.max.bytes=15728640 
replica.fetch.max.bytes=15728640

Por tanto, el ajuste debería ser:

fetch.message.max.bytes=15728640

a) en Broker:

b) sobre el consumidor:

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *