Todos os produtos
Search
Central de documentação

ApsaraMQ for Kafka:Por que uma mensagem expirada é retida?

Última atualização: Jun 27, 2026

Mesmo após o término do período de retenção, ainda é possível consultar uma mensagem no broker do ApsaraMQ for Kafka. Isso ocorre porque o ApsaraMQ for Kafka exclui mensagens no nível de segmento, e não individualmente.

Como funciona a exclusão baseada em segmentos

Para evitar fragmentação de armazenamento, o ApsaraMQ for Kafka armazena mensagens em segmentos. Por padrão, cada segmento comporta até 1 GB de dados. Durante o ciclo de exclusão, o sistema remove segmentos inteiros em vez de mensagens individuais.

O ciclo de vida de um segmento segue as etapas abaixo:

  1. Aberto: O segmento recebe novas mensagens e permanece nesse estado até atingir o limite de 1 GB.

  2. Fechado: Ao alcançar 1 GB, o segmento não aceita mais mensagens.

  3. Elegível para exclusão: Um segmento fechado cujas mensagens ultrapassaram o Message Retention Period configurado torna-se elegível para exclusão.

Como o ApsaraMQ for Kafka só exclui segmentos fechados, quaisquer mensagens expiradas dentro de um segmento aberto são retidas até que esse segmento seja fechado e, posteriormente, excluído.

Causas

Uma mensagem expirada é retida quando uma das condições a seguir se aplica:

  • O segmento ainda não atingiu 1 GB. O segmento que contém a mensagem expirada continua aberto e recebendo novas mensagens. Tópicos com baixo throughput geram segmentos que demoram mais para chegar ao limite de 1 GB, o que atrasa a exclusão.

  • O uso do disco está abaixo de 75%. Quando o uso do disco permanece inferior a 75%, o ApsaraMQ for Kafka exclui mensagens expiradas conforme uma programação fixa: uma vez por dia, às 04:00. As mensagens expiradas persistem até a próxima execução programada.

Limiares de exclusão baseados em disco

O ApsaraMQ for Kafka utiliza dois limiares de uso de disco para gerenciar a retenção de mensagens:

Uso do disco

Comportamento

Abaixo de 75%

Mensagens expiradas são excluídas uma vez por dia, às 04:00.

85% ou superior

As mensagens são excluídas imediatamente, começando pelas mais antigas, independentemente da configuração de Message Retention Period.

Nota

Quando o uso do disco atinge 85%, o sistema prioriza a disponibilidade do serviço em detrimento das configurações de retenção. As mensagens são excluídas a partir das mais antigas armazenadas, mesmo que não tenham atingido o Message Retention Period configurado.

Message Retention Period

O parâmetro Message Retention Period define a duração máxima de retenção das mensagens quando há capacidade de disco suficiente.

Propriedade

Valor

Intervalo válido

24 a 480 horas

Padrão

72 horas

Essa configuração estabelece um limite máximo, não uma garantia. A retenção real depende do status do segmento e do uso do disco, conforme descrito nas seções anteriores.

Solução de problemas

Caso as mensagens expiradas persistam por mais tempo que o esperado, verifique os itens a seguir:

  1. Verifique a utilização dos segmentos. Tópicos com baixo throughput produzem segmentos que demoram mais para atingir o limite de 1 GB, atrasando a exclusão. Para identificar se essa é a causa, analise o volume de dados do tópico. Se o tópico receber um volume baixo de mensagens, o segmento ativo poderá permanecer aberto por um longo período. Aumente o volume de mensagens ou aguarde o preenchimento e fechamento natural do segmento para resolver esse problema.

  2. Analise o uso do disco. Se o uso do disco estiver abaixo de 75%, as mensagens expiradas serão excluídas apenas na próxima execução programada (diariamente às 04:00). Monitore o uso do disco pelo console do ApsaraMQ for Kafka para confirmar essa condição.

  3. Revise a configuração do período de retenção. Confirme se o Message Retention Period está definido com o valor desejado para o tópico no console do ApsaraMQ for Kafka. O intervalo válido é de 24 a 480 horas, com padrão de 72 horas.