Tous les produits
Search
Centre de documentation

ApsaraMQ for Kafka:Pourquoi l'accumulation de messages d'un groupe affiche 0 ou reste vide

Dernière mise à jour :Aug 11, 2026

L'accumulation de messages correspond à la différence entre le dernier offset et l'offset validé du consommateur pour un groupe. Elle indique le retard du consommateur. Lorsque vous consultez l'état de consommation d'un groupe, l'accumulation de messages peut afficher 0 ou rester vide, même si l'offset du consommateur ne correspond pas au dernier offset. Cela signale généralement un problème lié à la validation ou au stockage des offsets des consommateurs.

Le tableau suivant résume les causes possibles et les solutions rapides.

Cause Symptôme Solution
Offset du consommateur non validé ou expiré La colonne « Consumer offset » est vide pour toutes les partitions Activez la validation automatique ou ajoutez des appels de validation manuelle ; redémarrez les consommateurs inactifs
Offset du consommateur réinitialisé manuellement à 0 Une partition affiche un offset de consommateur égal à 0 alors que le dernier offset est bien plus élevé Laissez le consommateur reprendre son activité et valider les offsets mis à jour
Offset du consommateur égal au dernier offset L'offset du consommateur correspond au dernier offset sur toutes les partitions Aucune action requise : il s'agit d'un comportement normal

Causes possibles

Offset du consommateur non validé ou expiré

Il s'agit de la cause la plus fréquente. Le système calcule l'accumulation de messages en soustrayant l'offset du consommateur du dernier offset. Si aucun offset de consommateur n'existe, le système ne peut pas calculer cette valeur et affiche 0 ou laisse le champ vide.

Cela se produit dans deux scénarios :

  • Le consommateur n'a jamais validé d'offset. Si enable.auto.commit est défini sur false et qu'aucun appel de validation manuelle (commitSync() ou commitAsync()) n'est effectué, aucun offset de consommateur n'est stocké. Sans offset de référence, le système ne peut pas calculer l'accumulation de messages. Par défaut, enable.auto.commit vaut true et les offsets sont validés automatiquement à l'intervalle spécifié par auto.commit.interval.ms (par défaut : 5 secondes). Si vous avez désactivé la validation automatique, vous devez valider explicitement les offsets dans le code de votre consommateur.

  • L'offset du consommateur a expiré. Les offsets des consommateurs sont conservés pendant une durée limitée, contrôlée par la configuration du broker offsets.retention.minutes. Si un groupe cesse de consommer des messages et que la période de rétention s'écoule, les offsets stockés sont supprimés. Lorsque les offsets expirent, les données du groupe de consommateurs sont nettoyées et le retard ne peut plus être calculé.

Comment vérifier :

  1. Dans la console ApsaraMQ for Kafka, accédez à Groups et vérifiez si le groupe possède un offset de consommateur validé.

  2. Si la colonne « consumer offset » est vide pour toutes les partitions, cela signifie que les offsets n'ont jamais été validés ou qu'ils ont expiré.

Vous pouvez également utiliser l'outil CLI kafka-consumer-groups pour inspecter le groupe. Le résultat ressemble à ce qui suit :

TOPIC          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG  CONSUMER-ID       HOST         CLIENT-ID
my-topic       0          -               4               -    consumer-1-...    /127.0.0.1   consumer-1
my-topic       1          -               3               -    consumer-1-...    /127.0.0.1   consumer-1

Un - dans les colonnes CURRENT-OFFSET et LAG indique qu'aucun offset de consommateur n'a été validé pour cette partition.

Comment résoudre le problème :

  • Si la validation automatique est désactivée, ajoutez des validations explicites d'offset dans le code de votre consommateur ou définissez enable.auto.commit sur true.

  • Si les offsets ont expiré parce que le consommateur est resté inactif trop longtemps, redémarrez le consommateur. De nouveaux offsets seront validés dès que le consommateur recommencera à traiter les messages.

Offset du consommateur réinitialisé manuellement à 0

Si vous réinitialisez manuellement l'offset du consommateur d'une partition à 0, la valeur d'accumulation de messages peut s'afficher incorrectement. Après une réinitialisation, le système recalcule l'accumulation de messages en se basant sur le nouvel offset. Selon le moment de l'opération et l'état du consommateur, la valeur affichée peut temporairement indiquer 0 ou rester vide avant que le consommateur ne reprenne son activité et ne valide les offsets mis à jour.

Comment vérifier :

Vérifiez l'offset du consommateur pour chaque partition dans l'état de consommation du groupe. Si une partition affiche un offset de consommateur égal à 0 alors que le dernier offset est bien plus élevé, une réinitialisation manuelle a probablement eu lieu. Le résultat CLI ressemble à ce qui suit :

TOPIC          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG  CONSUMER-ID       HOST         CLIENT-ID
my-topic       0          0               15000           15000 consumer-1-...   /127.0.0.1   consumer-1

Une valeur CURRENT-OFFSET égale à 0 avec un LOG-END-OFFSET élevé indique une réinitialisation récente de l'offset.

Comment résoudre le problème :

Laissez le consommateur reprendre le traitement. À mesure que le consommateur valide les offsets mis à jour, la valeur d'accumulation de messages se corrige automatiquement.

Offset du consommateur égal au dernier offset

Il s'agit d'un comportement normal. Lorsque l'offset du consommateur correspond au dernier offset, l'accumulation de messages est de 0 car le consommateur a entièrement rattrapé tous les messages produits.

Comment vérifier :

Comparez l'offset du consommateur et le dernier offset pour chaque partition. S'ils correspondent sur toutes les partitions, le groupe est à jour et la valeur 0 est correcte. Le résultat CLI ressemble à ce qui suit :

TOPIC          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG  CONSUMER-ID       HOST         CLIENT-ID
my-topic       0          150             150             0    consumer-1-...    /127.0.0.1   consumer-1
my-topic       1          200             200             0    consumer-2-...    /127.0.0.1   consumer-2

Cette cause explique uniquement une accumulation de messages égale à 0. Elle n'explique pas une valeur vide ou manquante.

Référence de diagnostic

États des groupes de consommateurs

Lors du dépannage des problèmes d'accumulation de messages, vérifiez l'état du groupe de consommateurs. Cet état influe sur la disponibilité des données de retard.

État Description Effet sur l'affichage de l'accumulation de messages
Stable Les consommateurs sont actifs et des partitions leur sont attribuées Affiché normalement
Empty Aucun consommateur actif dans le groupe Peut afficher 0 ou vide si les offsets ont expiré
Dead Le groupe ne compte aucun membre et aucun offset validé Non affiché
Rebalancing Les partitions sont en cours de réaffectation entre les consommateurs Les valeurs peuvent être obsolètes ou figées jusqu'à la fin du rééquilibrage

Paramètres de configuration associés

Paramètre Valeur par défaut Description
enable.auto.commit true Active la validation automatique des offsets à intervalles réguliers
auto.commit.interval.ms 5000 Intervalle entre les validations automatiques d'offset (en millisecondes)
offsets.retention.minutes Varie selon le déploiement Durée de conservation des offsets validés après que le groupe de consommateurs devient vide
auto.offset.reset latest Définit le comportement du consommateur lorsqu'aucun offset validé n'existe : latest (commencer par le plus récent), earliest (commencer par le plus ancien) ou none (générer une erreur)