Partekatu honen bidez:


Configuraciones recomendadas para clientes de Apache Kafka

Estas son las configuraciones recomendadas para usar Azure Event Hubs desde las aplicaciones cliente de Apache Kafka.

Propiedades de configuración del cliente de Java

Configuraciones de productos y consumidor

Propiedad Valores recomendados Intervalo permitido Notas
metadata.max.age.ms 180 000 (aproximado) < 240 000 Se puede reducir para recoger los cambios de metadatos antes.
connections.max.idle.ms 180000 < 240 000 Azure cierra la inactividad de TCP entrante > 240 000 ms, lo que puede dar lugar a un envío de conexiones inactivas (que se muestran como lotes expirados debido al tiempo de espera de envío).

Solo configuraciones de productor

Las configuraciones de productor se pueden encontrar aquí.

Propiedad Valores recomendados Intervalo permitido Notas
max.request.size 1000000 < 1 046 528 El servicio cerrará las conexiones si se envían solicitudes de más de 1 046 528 bytes. Este valor debe cambiar y causará problemas en escenarios de producción de alto rendimiento.
retries > 0 Puede que sea necesario aumentar el valor de delivery.timeout.ms; consulte la documentación.
request.timeout.ms 30 000 .. 60000 > 20 000 Event Hubs tendrá un valor predeterminado interno de un mínimo de 20 000 ms. Aunque se aceptan solicitudes con valores de tiempo de espera menores, no se garantiza el comportamiento del cliente.

Asegúrese de que request.timeout.ms tenga al menos el valor recomendado de 60 000 y su session.timeout.ms tenga al menos el valor recomendado de 30 000. Si estos valores son demasiado bajos podrían provocar tiempos de expiración de consumidor, que, a su vez, provocarían reequilibrios (lo que provocaría más tiempos de expiración, que provocarían más reequilibrios, y así sucesivamente).

metadata.max.idle.ms 180000 > 5000 Controla cuánto tiempo el productor almacenará en memoria caché los metadatos de un tema que está inactivo. Si el tiempo transcurrido desde la última vez que se generó un tema supera la duración de inactividad de los metadatos, los metadatos del tema se olvidan y el siguiente acceso a estos forzará la solicitud de captura de metadatos.
linger.ms > 0 En escenarios de alto rendimiento, el valor de permanencia debe ser igual al valor tolerable más alto para aprovechar el procesamiento por lotes.
delivery.timeout.ms Se establece según la fórmula (request.timeout.ms + linger.ms) * retries.
compression.type none La compresión no se admite actualmente.

Solo configuraciones de consumidor

Las configuraciones de consumidor se pueden encontrar aquí.

Propiedad Valores recomendados Intervalo permitido Notas
heartbeat.interval.ms 3000 3000 es el valor predeterminado y no debe cambiarse.
session.timeout.ms 30000 6000 .. 300000 Comience con 30 000 y auméntelo si ve un reequilibrio frecuente debido a los latidos que faltan.

Asegúrese de que request.timeout.ms tenga al menos el valor recomendado de 60 000 y su session.timeout.ms tenga al menos el valor recomendado de 30 000. Si estos valores son demasiado bajos podrían provocar tiempos de expiración de consumidor, que, a su vez, provocarían reequilibrios (lo que provocaría más tiempos de expiración, que provocarían más reequilibrios, y así sucesivamente).

max.poll.interval.ms 300000 (valor predeterminado) >session.timeout.ms Se usa para el tiempo de espera de reequilibrio, por lo que este valor no debe establecerse demasiado bajo. Debe ser mayor que el valor de session.timeout.ms.

Propiedades de configuración de librdkafka

El archivo de configuración principal de librdkafka (vínculo) contiene descripciones extendidas de las propiedades siguientes.

Configuraciones de productos y consumidor

Propiedad Valores recomendados Intervalo permitido Notas
socket.keepalive.enable true Necesario si se espera que la conexión esté inactiva. Azure cerrará la inactividad de TCP entrante > 240 000 ms.
metadata.max.age.ms ~ 180 000 < 240 000 Se puede reducir para recoger los cambios de metadatos antes.

Solo configuraciones de productor

Propiedad Valores recomendados Intervalo permitido Notas
retries 2 El valor predeterminado es 2147483647.
request.timeout.ms 30 000 .. 60000 > 20 000 Event Hubs tendrá un valor predeterminado interno de un mínimo de 20 000 ms. El valor predeterminado de librdkafka es 5000, que puede ser problemático. Aunque se aceptan solicitudes con valores de tiempo de espera menores, no se garantiza el comportamiento del cliente.
partitioner consistent_random Véase la documentación de librdkafka consistent_random es el valor predeterminado y el mejor. Las claves vacías y nulas se controlan idealmente en la mayoría de los casos.
compression.codec none La compresión no se admite actualmente.

Solo configuraciones de consumidor

Propiedad Valores recomendados Intervalo permitido Notas
heartbeat.interval.ms 3000 3000 es el valor predeterminado y no debe cambiarse.
session.timeout.ms 30000 6000 .. 300000 Comience con 30 000 y auméntelo si ve un reequilibrio frecuente debido a los latidos que faltan.
max.poll.interval.ms 300000 (valor predeterminado) >session.timeout.ms Se usa para el tiempo de espera de reequilibrio, por lo que este valor no debe establecerse demasiado bajo. Debe ser mayor que el valor de session.timeout.ms.

Notas adicionales

Consulte la siguiente tabla de escenarios de errores comunes relacionados con la configuración.

Síntomas Problema Solución
Errores de confirmación de desplazamiento debido al reequilibrio El consumidor está esperando demasiado tiempo entre las llamadas a poll() y el servicio está echando al consumidor fuera del grupo. Tiene varias opciones:
  • Aumentar el tiempo de espera de procesamiento de sondeo (max.poll.interval.ms)
  • Reducir el tamaño de lote de los mensajes para acelerar el procesamiento.
  • Mejorar la paralelización del procesamiento para evitar el bloqueo de consumer.poll().
La aplicación de alguna combinación de estas tres opciones es probablemente la más acertada.
Excepciones de red con un alto rendimiento de producción ¿Usa el cliente de Java y el valor predeterminado de max.request.size? Es posible que las solicitudes sean demasiado grandes. Consulte las configuraciones de Java anteriores.

Pasos siguientes

Consulte Suscripción de Azure y límites de servicio, cuotas y restricciones para obtener las cuotas y los límites de todos los servicios de Azure.