No se puede describir Kafka Streams Consumer Group

2

Lo que quiero lograr es asegurarme de que mi consumidor de transmisiones de Kafka no tenga retrasos.

Tengo una aplicación simple de flujos de Kafka que materializó un tema como tienda en forma de GlobalKTable.

Cuando trato de describir al consumidor en Kafka por comando:

kafka-consumer-groups --bootstrap-server localhost:9092 --describe --group my-application-id

No puedo ver ningún resultado. Y tampoco hay error. Cuando enumero a todos los consumidores por:

kafka-consumer-groups --bootstrap-server localhost:9092 --describe --all-groups

el consumidor de mi aplicación aparece correctamente en la lista.

¿Alguna idea de dónde encontrar información adicional sobre lo que está sucediendo que no puedo describir como consumidor? (Cualquier otro consumidor de transmisiones de Kafka que escriba sobre temas puede describirse correctamente).

0
2

Si su aplicación solo materializa un tema en un GlobalKTablegrupo sin consumidores, se forma. Internamente, el "consumidor global" no usa subscribe()pero assign()y no hay ningún consumidor group.idconfigurado (como puede verificar en los registros) y no se confirma ningún desplazamiento.

La razón es que todas las instancias de la aplicación necesitan consumir todas las particiones de tema (es decir, patrón de transmisión). Sin embargo, un grupo de consumidores está diseñado para que diferentes instancias lean diferentes particiones para el mismo tema. Además, por grupo de consumidores, solo se puede confirmar un desplazamiento por partición; sin embargo, si varias instancias leen la misma partición y confirmarían compensaciones usando la misma, group.idlas confirmaciones se sobrescribirán entre sí.

Por lo tanto, el uso de un grupo de consumidores mientras se "transmiten" datos no funciona.

Sin embargo, todos los consumidores deben exponer métricas de "retraso" records-lag-maxy records-lag(consulte https://kafka.apache.org/documentation/#consumer_fetch_monitoring ). Por lo tanto, debería poder conectarse a través de JMX para monitorear el retraso. Kafka Streams también incluye métricas de clientes a través de KafkaStreams#metrics().