Todos os produtos
Search
Central de documentação

ApsaraMQ for Kafka:Why are expired consumer offsets retained?

Última atualização: Aug 24, 2026

O ApsaraMQ for Kafka exclui os consumer offsets após o período de retenção configurado. No entanto, os consumer offsets de um Group ativo permanecem mesmo depois de expirarem. Este tópico explica a causa e apresenta soluções.

Sintoma

Em um servidor do ApsaraMQ for Kafka versão 2.2.0, os consumer offsets de um Group ultrapassam o período de retenção configurado, mas não são excluídos. Você ainda consegue visualizar esses consumer offsets no console: abra a página Topic Details no console do ApsaraMQ for Kafka, clique em na aba Subscriptions e visualize os Consumer Details do tópico desejado.

Nota

O parâmetro Consumer Offset Retention Period define o tempo máximo de retenção de um consumer offset, contado a partir da confirmação (commit). Consumer offsets que excedem esse período são excluídos. A exclusão não redefine o offset para 0; simplesmente remove o registro existente. Cada nova confirmação de consumer offset em uma partição de tópico reinicia o contador de retenção desse offset. Para mais informações, consulte Modify message configurations.

Causas possíveis

Conforme o design open source do Kafka, os consumer offsets de um Group ativo não são excluídos, mesmo quando ultrapassam o período de retenção configurado.

Nota

Um Group é considerado ativo quando possui pelo menos uma thread de consumidor utilizando o método subscribe, em vez do método assign.

Por exemplo, suponha que você crie um Group chamado TestGroup para assinar o TopicA e confirmar consumer offsets. Devido a uma mudança de negócio, você cancela a assinatura do TopicA e passa a assinar o TopicB. Como o TestGroup permanece ativo, os consumer offsets desse Group tanto no TopicA quanto no TopicB não são excluídos.

Se você apenas cancelar a assinatura do TopicA sem assinar o TopicB, o TestGroup se torna inativo. Nesse caso, os consumer offsets do TestGroup no TopicA serão excluídos assim que excederem o período de retenção.

Soluções

Para excluir consumer offsets expirados, utilize um dos métodos abaixo:

  • Desconecte todas as threads de consumidor que utilizam o método subscribe para tornar o Group inativo e adote uma das seguintes abordagens conforme sua necessidade:

    • Aguarde a expiração natural dos consumer offsets. Após expirarem, eles serão excluídos automaticamente.

    • Redefina os consumer offsets expirados para 0 por partição diretamente no console.

    • Migre para um novo Group, torne inativas todas as threads de consumidor do Group original e aguarde a expiração dos consumer offsets originais. Eles serão removidos automaticamente após o vencimento.

    • Atualize a versão do servidor para 2.6.0.

  • Mantenha a conexão do Group ativa e cancele a assinatura dos tópicos desnecessários ao seu negócio. Mesmo com o Group ativo, os consumer offsets dos tópicos não assinados serão limpos após excederem o período de retenção.

Após aplicar um dos métodos acima, verifique o resultado no console. Acesse a página Topic Details, clique em na aba Subscriptions e consulte os Consumer Details do tópico. Se os consumer offsets foram excluídos, nenhum registro existirá. Caso tenha redefinido os valores para 0, os consumer offsets permanecerão visíveis com valor 0.

Referências