Si hallas algún error con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes añadir el código al trabajo final.
A partir de la v0.9.0, Kafka se entrega 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
Para los nuevos consumidores (que usan un tema de kafka para administrar compensaciones en lugar de zookeeper) no puede eliminar la información del grupo usando las herramientas integradas de kafka.
Aquí hay un ejemplo de intentar eliminar la información del grupo para un consumidor de nuevo estilo usando el 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 caduca el último desplazamiento confirmado para ese grupo.
Esto es un poco molesto desde una perspectiva de monitoreo (especialmente cuando se rastrean las compensaciones a través de algo como enterrar) 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 caduquen. .
Hipotéticamente, podría escribir una lápida en ese tema manualmente (que es lo que sucede durante el vencimiento de la compensación), pero no he encontrado ninguna herramienta que lo haga fácil.
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 las nuevas versiones 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 de la mayor compensación, lo 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.
FYI, hay una pregunta ¿Cómo puedo rebobinar la compensación en el consumidor? en Kafka FAQ, pero no me ayudó mucho.