Todos los productos
Search
Centro de documentos

ApsaraMQ for Kafka:Why is an expired message retained?

Última actualización: Sep 04, 2026

Un mensaje aún puede consultarse en el broker de ApsaraMQ for Kafka después de que finalice su periodo de retención. Esto ocurre porque ApsaraMQ for Kafka elimina los mensajes a nivel de segmento y no de forma individual.

Funcionamiento de la eliminación por segmentos

ApsaraMQ for Kafka almacena los mensajes en segmentos para evitar la fragmentación del almacenamiento. De manera predeterminada, cada segmento contiene hasta 1 GB de datos. Cuando el sistema ejecuta un ciclo de eliminación, borra segmentos completos en lugar de mensajes individuales.

Un segmento pasa por el siguiente ciclo de vida:

  1. Abierto: El segmento acepta mensajes nuevos y permanece abierto hasta alcanzar el límite de tamaño de 1 GB.

  2. Cerrado: El segmento alcanzó 1 GB y ya no acepta mensajes.

  3. Elegible para eliminación: Un segmento cerrado cuyos mensajes superaron el Message Retention Period configurado se vuelve elegible para su eliminación.

Dado que ApsaraMQ for Kafka solo elimina segmentos cerrados, cualquier mensaje caducado dentro de un segmento abierto se conserva hasta que dicho segmento se cierra y posteriormente se elimina.

Causas

Un mensaje caducado se conserva cuando se cumple alguna de las siguientes condiciones:

  • El segmento no ha alcanzado 1 GB. El segmento que contiene el mensaje caducado sigue abierto y acepta mensajes nuevos. Los temas con bajo rendimiento generan segmentos que tardan más en llegar al límite de 1 GB, lo cual retrasa la eliminación.

  • El uso del disco es inferior al 75 %. Cuando el uso del disco se mantiene por debajo del 75 %, ApsaraMQ for Kafka elimina los mensajes caducados según una programación fija: una vez al día a las 04:00. Los mensajes caducados persisten hasta que se ejecuta la siguiente eliminación programada.

Umbrales de eliminación basados en disco

ApsaraMQ for Kafka utiliza dos umbrales de uso de disco para gestionar la retención de mensajes:

Uso del disco

Comportamiento

Inferior al 75 %

Los mensajes caducados se eliminan una vez al día a las 04:00.

85 % o superior

Los mensajes se eliminan inmediatamente, comenzando por los más antiguos, sin importar la configuración del Message Retention Period.

Nota

Cuando el uso del disco alcanza el 85 %, el sistema prioriza la disponibilidad del servicio sobre la configuración de retención. Los mensajes se eliminan empezando por los almacenados primero, incluso si no han alcanzado el Message Retention Period configurado.

Message Retention Period

El parámetro Message Retention Period especifica la duración máxima durante la cual se conservan los mensajes cuando hay suficiente capacidad en el disco.

Propiedad

Valor

Rango válido

De 24 a 480 horas

Valor predeterminado

72 horas

Esta configuración define un límite máximo, no una garantía. La retención real depende del estado del segmento y del uso del disco, tal como se describe en las secciones anteriores.

Solución de problemas

Si los mensajes caducados persisten más tiempo del esperado, compruebe lo siguiente:

  1. Verifique la utilización del segmento. Los temas con bajo rendimiento generan segmentos que tardan más en alcanzar el límite de 1 GB, lo que retrasa la eliminación. Para determinar si esta es la causa, revise el volumen de datos del tema. Si el tema recibe un volumen bajo de mensajes, es posible que el segmento activo permanezca abierto durante un periodo prolongado. Aumentar el volumen de mensajes o esperar a que el segmento se llene y se cierre de forma natural resuelve este problema.

  2. Compruebe el uso del disco. Si el uso del disco es inferior al 75 %, los mensajes caducados solo se eliminan en la siguiente ejecución programada (diariamente a las 04:00). Supervise el uso del disco mediante la consola de ApsaraMQ for Kafka para confirmarlo.

  3. Revise la configuración del periodo de retención. Confirme que el Message Retention Period esté configurado con el valor deseado para el tema en la consola de ApsaraMQ for Kafka. El rango válido es de 24 a 480 horas, con un valor predeterminado de 72 horas.