Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Distributed Message Service for Kafka/ Perguntas frequentes/ Mensagens/ Por que as mensagens ainda existem após o término do período de retenção?
Atualizado em 2023-08-25 GMT+08:00

Por que as mensagens ainda existem após o término do período de retenção?

Se o tempo de envelhecimento tiver sido definido para um tópico, o valor do parâmetro log.retention.hours não terá efeito para o tópico. O valor do parâmetro log.retention.hours terá efeito somente se o tempo de envelhecimento não tiver sido definido para o tópico.

Possível causa 1: cada partição de um tópico consiste em vários arquivos de segmento do mesmo tamanho (500 MB). Quando o tamanho das mensagens armazenadas em um arquivo de segmento atinge 500 MB, outro arquivo de segmento é criado. Kafka exclui arquivos de segmento em vez de mensagens. O Kafka exige que pelo menos um arquivo de segmento seja reservado para armazenar mensagens. Se o arquivo de segmento em uso contiver mensagens antigas, o arquivo de segmento não será excluído. Portanto, as mensagens envelhecidas permanecerão.

Solução: aguarde até que o segmento não esteja mais em uso ou exclua o tópico em que as mensagens atingiram o período de retenção.

Possível causa 2: em um tópico, há uma mensagem cujo CreateTime é um tempo futuro. Por exemplo, suponha que seja 1º de janeiro e CreateTime seja 1º de fevereiro. A mensagem não será envelhecida após 72 horas a partir de agora. Como resultado, as mensagens criadas posteriormente também não serão envelhecidas.

Solução: exclua o tópico onde CreateTime de uma mensagem é um tempo futuro.