Solución:
A partir de la versión 0.9.0, Kafka se envía con un conjunto de herramientas en el /bin
uno de los cuales es el kafka-consumer-groups.sh
herramienta. Esto eliminará un grupo de consumidores. ./kafka-consumer-groups.sh --zookeeper <zookeeper_url> --delete --group <group-name>
Para los nuevos consumidores (que usan un tema de kafka para administrar las compensaciones en lugar de zookeeper) no puede eliminar la información del grupo con las herramientas integradas de kafka.
A continuación, se muestra un ejemplo de cómo se intenta eliminar la información de grupo de un nuevo consumidor de estilo mediante la kafka-consumer-groups.sh
texto:
bin/kafka-consumer-groups.sh --bootstrap-server "kafka:9092" --delete --group "indexer" --topic "cleaned-logs"
Option '[delete]' is only valid with '[zookeeper]'. Note that there's no need to delete group metadata for the new consumer as the group is deleted when the last committed offset for that group expires.
Aquí está la parte importante de esa respuesta:
Tenga en cuenta que no es necesario eliminar los metadatos del grupo para el nuevo consumidor, ya que el grupo se elimina cuando vence el último desplazamiento comprometido para ese grupo.
Esto es un poco molesto desde una perspectiva de monitoreo (especialmente cuando se rastrea compensaciones a través de algo como madriguera) porque significa que si cambia los nombres de los grupos de consumidores en su código, seguirá viendo que los grupos antiguos están atrasados en sus compensaciones hasta que esas compensaciones caduquen. .
Hipotéticamente, podría escribir una lápida para ese tema manualmente (que es lo que sucede durante la expiración de la compensación) pero no he encontrado ninguna herramienta que facilite esto.
Actualmente, como sé, la única forma de eliminar un grupo de consumidores de Kafka es eliminar manualmente la ruta de Zookeeper /consumers/[group_id]
.
Si solo desea eliminar un grupo de consumidores, no hay nada de qué preocuparse por eliminar manualmente la ruta de Zookeeper, pero si lo hace para rebobinar las compensaciones, lo siguiente será útil.
En primer lugar, debe detener todos los consumidores que pertenecen al grupo de consumidores antes de eliminar la ruta de Zookeeper. Si no lo hace, esos consumidores no consumirán los mensajes recién producidos y pronto cerrarán las conexiones con el clúster de Zookeeper.
Cuando reinicie los consumidores, si desea que los consumidores comiencen desde el principio, dé auto.offset.reset
propiedad a smallest
(o earliest
en los nuevos lanzamientos de Kafka). El valor predeterminado de la propiedad es largest
(o latest
en las nuevas versiones de Kafka), lo que hace que los consumidores que reinician lean después del desplazamiento más grande que, a su vez, consume solo los mensajes recién producidos. Para obtener más información sobre la propiedad, consulte Configuración del consumidor en la documentación de Kafka.
Para su información, hay una pregunta ¿Cómo puedo rebobinar la compensación en el consumidor? en las preguntas frecuentes de Kafka, pero no me ayudó mucho.