J'essaie de réinitialiser le décalage client avec les derniers outils CLI pour Kafka.
kafka-consumer-groups.bat --bootstrap-server kafka-Host:9092 --group my-group --reset-offsets --to-earliest --all-topics
En conséquence, je vois cette sortie:
TOPIC PARTITION NEW-OFFSET
FirstTopic 0 0
SecondTopic 0 0
Mais relancez la commande:
kafka-consumer-groups.bat --bootstrap-server kafka-Host:9092 --group my-group --describe
résultats en sortie:
Consumer group 'my-group' has no active members.
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG
FirstTopic 0 1230 1230 0
SecondTopic 0 1022 1022 0
J'ai essayé d'autres options telles que la réinitialisation du décalage explicite ou la spécification directe du sujet, mais le résultat est identique. La sortie suggère que l'opération réussit lors de la vérification des décalages avec la commande describe ou du débogage indique que le décalage n'a pas été modifié.
Quiconque réussit à réinitialiser la compensation de consommation au sein de courtiers non-zookeepers.
Par défaut, --reset-offsets
imprime simplement le résultat de l'opération. Pour effectuer l'opération, vous devez ajouter --execute
à votre commande:
kafka-consumer-groups.bat --bootstrap-server kafka-Host:9092 --group
my-group --reset-offsets --to-earliest --all-topics --execute
Bien que la réponse acceptée réponde parfaitement à la question OP, il existe plus de paramètres disponibles pour réinitialiser les décalages. Donc, en ajoutant cette réponse pour étendre la réponse acceptée.
Pour réinitialiser le décalage de tous les sujets au plus tôt dans le groupe de consommateurs
kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
<group_name> --reset-offsets --to-earliest --all-topics --execute
Pour réinitialiser le décalage d'un sujet spécifique au plus tôt dans le groupe de consommateurs
kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
<group_name> --reset-offsets --to-earliest --topic <my-topic> --execute
Pour réinitialiser le décalage d'un sujet spécifique sur un décalage spécifique dans le groupe de consommateurs
kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
<group_name> --reset-offsets --to-offset 1000 --topic <my-topic> --execute
Autres arguments supportés:
- shift-by [entier positif ou négatif] - Décale le décalage en avant ou en arrière par rapport à un entier donné.
- to-current et - to-latest sont identiques à - to-offset et - to-earlyestest.
- to-datetime [Le format de date/heure est aaaa-MM-jjTHH: mm: ss.xxx]
kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
<group_name> --reset-offsets --to-datetime 2017-08-04T00:00:00.000 [ --all-topics or --topic <topic-name> ] --execute
- by-duration [Le format est PnDTnHnMnS]
kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
<group_name> --reset-offsets --by-duration PT0H10M0S [ --all-topics or --topic <topic-name> ] --execute
Réinitialiser pour compenser par la durée de l'horodatage actuel.
comment valider?
Utilisez la commande ci-dessous pour vérifier le décalage actuel/à la fin des décalages et pour confirmer la réinitialisation effectuée.
kafka-consumer-groups.sh --bootstrap-server <kafka_Host:port> --group <group_id> --describe
Exemple de sortie:
Consumer group 'group1' has no active members.
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID Host CLIENT-ID
intro 0 0 99 99 - - -
Erreurs possibles:
Erreur: Les assignations ne peuvent être réinitialisées que si le groupe '[nom du groupe]' est inactif, mais que l'état actuel est Stable.
"Stable" signifie qu'il y a un consommateur actif en cours d'exécution pour ce groupe. Donc, vous devez d’abord arrêter le ou les consommateurs actifs et réessayer de réinitialiser les décalages.
Il est impossible de réinitialiser les décalages s’il existe un consommateur actif pour le groupe de consommateurs.