Todos os produtos
Search
Central de documentação

ApsaraMQ for Kafka:Por que o acúmulo de mensagens de um Grupo exibe 0 ou está vazio

Última atualização: Jun 27, 2026

O acúmulo de mensagens corresponde à diferença entre o offset mais recente e o offset de consumo confirmado de um Grupo. Esse valor indica o atraso do consumidor. Ao verificar o status de consumo de um Grupo, o acúmulo de mensagens pode apresentar 0 ou aparecer vazio, mesmo quando o offset de consumo não coincide com o offset mais recente. Geralmente, isso sinaliza um problema na confirmação ou no armazenamento dos offsets de consumo.

A tabela a seguir resume as possíveis causas e as correções rápidas.

Causa

Sintoma

Correção

Offset de consumo não confirmado ou expirado

A coluna de offset de consumo está vazia para todas as partições

Ative a confirmação automática ou adicione chamadas de confirmação manual; reinicie consumidores ociosos

Offset de consumo redefinido manualmente para 0

Uma partição exibe offset de consumo 0 enquanto o offset mais recente é muito maior

Permita que o consumidor retome e confirme os offsets atualizados

Offset de consumo igual ao offset mais recente

O offset de consumo coincide com o offset mais recente em todas as partições

Nenhuma ação necessária — este é o comportamento normal

Possíveis causas

Offset de consumo não confirmado ou expirado

Esta é a causa mais frequente. O sistema calcula o acúmulo de mensagens como a diferença entre o offset mais recente e o offset de consumo. Se não existir nenhum offset de consumo, o sistema não consegue calcular esse valor e exibe 0 ou deixa o campo vazio.

Isso ocorre em dois cenários:

  • O consumidor nunca confirmou um offset. Se enable.auto.commit estiver definido como false e nenhuma chamada de confirmação manual (commitSync() ou commitAsync()) for executada, nenhum offset de consumo será armazenado. Sem um offset base, o sistema não consegue calcular o acúmulo de mensagens. Por padrão, enable.auto.commit é true, e os offsets são confirmados automaticamente no intervalo especificado por auto.commit.interval.ms (padrão: 5 segundos). Caso tenha desativado a confirmação automática, confirme os offsets explicitamente no código do consumidor.

  • O offset de consumo expirou. Os offsets de consumo são retidos por um período limitado, controlado pela configuração do broker offsets.retention.minutes. Se um Grupo parar de consumir e o período de retenção terminar, os offsets armazenados serão excluídos. Quando os offsets expiram, os dados do grupo de consumidores são limpos e o atraso não pode ser calculado.

Como verifique:

  1. No console do ApsaraMQ for Kafka, acesse Groups e verifique se o Grupo possui algum offset de consumo confirmado.

  2. Se a coluna de offset de consumo estiver vazia para todas as partições, os offsets nunca foram confirmados ou já expiraram.

Também é possível usar a ferramenta CLI kafka-consumer-groups para inspecionar o Grupo. A saída será semelhante à seguinte:

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

Um - nas colunas CURRENT-OFFSET e LAG indica que nenhum offset de consumo foi confirmado para essa partição.

Como corrigir:

  • Se a confirmação automática estiver desativada, adicione confirmações explícitas de offset ao código do consumidor ou defina enable.auto.commit como true.

  • Caso os offsets tenham expirado porque o consumidor ficou ocioso por muito tempo, reinicie o consumidor. Novos offsets serão confirmados assim que ele começar a processar mensagens.

Offset de consumo redefinido manualmente para 0

Se você redefinir manualmente o offset de consumo de uma partição para 0, o valor de acúmulo de mensagens poderá ser exibido incorretamente. Após uma redefinição, o sistema recalcula o acúmulo de mensagens com base no novo offset. Dependendo do momento e do estado do consumidor, o valor exibido pode mostrar temporariamente 0 ou aparecer vazio antes que o consumidor retome e confirme os offsets atualizados.

Como verifique:

Verifique o offset de consumo de cada partição no status de consumo do Grupo. Se alguma partição apresentar offset de consumo 0 enquanto o offset mais recente for muito maior, é provável que tenha ocorrido uma redefinição manual. A saída da CLI será semelhante à seguinte:

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

Um CURRENT-OFFSET igual a 0 com um LOG-END-OFFSET grande indica uma redefinição recente de offset.

Como corrigir:

Permita que o consumidor retome o processamento. À medida que o consumidor confirma os offsets atualizados, o valor de acúmulo de mensagens se corrige automaticamente.

Offset de consumo igual ao offset mais recente

Este é o comportamento esperado. Quando o offset de consumo coincide com o offset mais recente, o acúmulo de mensagens é 0 porque o consumidor processou todas as mensagens produzidas.

Como verifique:

Compare o offset de consumo e o offset mais recente de cada partição. Se eles coincidirem em todas as partições, o Grupo está totalmente sincronizado e 0 é o valor correto. A saída da CLI será semelhante à seguinte:

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

Essa causa explica apenas um acúmulo de mensagens igual a 0. Ela não justifica um valor vazio ou ausente.

Referência de diagnóstico

Estados do Grupo de Consumidores

Ao solucionar problemas de acúmulo de mensagens, verifique o estado do Grupo de consumidores. O estado determina se os dados de atraso estão disponíveis.

Estado

Descrição

Efeito na exibição do acúmulo de mensagens

Stable

Consumidores ativos com partições atribuídas

Exibido normalmente

Empty

Nenhum consumidor ativo no Grupo

Pode exibir 0 ou vazio se os offsets tiverem expirado

Dead

O Grupo não tem membros nem offsets confirmados

Não exibido

Rebalancing

Partições sendo reatribuídas entre consumidores

Os valores podem estar desatualizados ou congelados até a conclusão do rebalanceamento

Parâmetros de configuração relacionados

Parâmetro

Padrão

Descrição

enable.auto.commit

true

Ativa a confirmação automática de offsets em intervalos regulares

auto.commit.interval.ms

5000

Intervalo entre confirmações automáticas de offsets (em milissegundos)

offsets.retention.minutes

Varia conforme a implantação

Duração pela qual os offsets confirmados são retidos após o Grupo de consumidores ficar vazio

auto.offset.reset

latest

Defina o comportamento do consumidor quando não existe offset confirmado: latest (inicia pelo mais recente), earliest (inicia pelo mais antigo) ou none (gera um erro)