Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 el Protocolo de Control de Transmisión (TCP) de entrada 240.000 > ms, lo que puede provocar el envío de conexiones muertas (que aparecen como lotes caducados 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 cierra las conexiones si se envían solicitudes de más de 1046 528 bytes. Este valor debe cambiarse y provocar problemas en escenarios de producción de alto rendimiento. |
retries |
> 0 | Puede requerir un aumento delivery.timeout.ms de valor, consulta la documentación. |
|
request.timeout.ms |
30 000 .. 60000 | > 20 000 | Event Hubs tiene como valor predeterminado internamente un mínimo de 20 000 ms. Los tiempos de espera de los productores son seguros con valores tan bajos como 10.000 ms y no serán un problema para ellos. 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. Tener estos ajustes demasiado bajos podría causar tiempos de espera para el consumidor, que a su vez provocan reequilibrios (lo que provoca más tiempos de espera, que provocan más reequilibrio, y así sucesivamente). |
metadata.max.idle.ms |
180000 | > 5000 | Controla cuánto tiempo almacena en caché el productor 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, gzip |
Actualmente solo se admite la compresión gzip. |
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. Tener estos ajustes demasiado bajos podría causar tiempos de espera para el consumidor, que a su vez provocan reequilibrios (lo que provoca más tiempos de espera, que provocan más reequilibrio, y así sucesivamente). |
max.poll.interval.ms |
300000 (valor predeterminado) | >session.timeout.ms | Se usa para el tiempo de espera de rebalance, así que no debería estar demasiado bajo. Debe ser mayor que el valor de session.timeout.ms. |
Propiedades de configuración de librdkafka
El archivo de configuración principal librdkafka (vínculo) contiene descripciones extendidas para las propiedades descritas en las secciones 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 cierra tcp de entrada inactivo > 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 |
> 0 | El valor predeterminado es 2147483647. | |
request.timeout.ms |
30 000 .. 60000 | > 20 000 | Event Hubs tiene como valor predeterminado internamente 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 fuera más bajos, el comportamiento del cliente no está garantizado. |
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, gzip |
Actualmente solo se admite la compresión gzip. |
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 rebalance, así que no debería estar 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:
|
| Excepciones de red con un alto rendimiento de producción | Si usa el cliente java + max.request.size predeterminado, es posible que las solicitudes sean demasiado grandes. | Consulte configuraciones de Java mencionadas anteriormente. |
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.