Este tema describe la directiva predeterminada de reintento de consumo del lado del servidor para ApsaraMQ for RabbitMQ. A continuación se explica cómo se gestionan los mensajes tras un fallo de consumo para ayudarle a elegir una directiva de procesamiento adecuada.
Flujo de reintento de consumidor
El mecanismo de reintento de consumidor mejora la fiabilidad del sistema y la consistencia de los datos al reintentar automáticamente el envío o procesamiento de mensajes cuando ocurren fallos temporales.
Ready: Mensajes que se encuentran en una cola y esperan ser consumidos.
Unack: Mensajes que un consumidor ha recuperado pero aún no ha confirmado. Esto significa que el mensaje se recibió, pero no se ha procesado por completo.
Propiedades de la directiva de reintento
La directiva de reintento de consumidor consta de dos propiedades clave: tiempo de espera de consumo y número máximo de intentos de entrega.
Tiempo de espera de consumo
El tiempo de espera de consumo es el tiempo máximo permitido para que un consumidor procese un mensaje. Si un consumidor no procesa un mensaje dentro de este periodo, el mensaje vuelve al estado Ready. Posteriormente, otro consumidor puede recuperarlo. Establecer un tiempo de espera de consumo razonable ofrece las siguientes ventajas:
Evitar suspensiones prolongadas: Un tiempo de espera de consumo adecuado evita que un consumidor permanezca suspendido durante mucho tiempo mientras procesa un mensaje. Esto previene la acumulación de mensajes y mejora el rendimiento general del sistema.
Garantizar un procesamiento fiable de mensajes: Si un consumidor no logra procesar un mensaje durante un periodo prolongado, ApsaraMQ for RabbitMQ reenvía el mensaje a otros consumidores. De esta forma se asegura que el mensaje se procese con prontitud.
Número máximo de intentos de entrega
El número máximo de intentos de entrega es la cantidad máxima de veces que el sistema intenta entregar un mensaje a un consumidor. Configurar un límite razonable de intentos de entrega proporciona los siguientes beneficios:
Evitar reintentos infinitos: Establecer un número máximo de intentos de entrega impide que los mensajes se reenvíen indefinidamente. Esto evita el desperdicio de recursos del sistema.
Failover: Cuando se alcanza el número máximo de intentos de entrega, el sistema puede reenviar el mensaje a una cola de mensajes muertos. Los desarrolladores pueden entonces analizar y procesar dicho mensaje.
La propiedad x-delivery-limit de una cola especifica el número máximo de reentregas. El número máximo de intentos de entrega equivale a x-delivery-limit + 1.
Descripción de parámetros de la directiva de reintento de instancia
|
Tipo de instancia |
Instancias serverless |
Instancias de suscripción |
||
|
Compartida |
Dedicada |
Enterprise Edition |
Platinum Edition |
|
|
Reservada + Elástica / Pago por uso acumulado |
Reservada + Elástica |
|||
|
Tiempo de espera de consumo |
Máximo: 3 horas Predeterminado: 5 minutos |
Máximo: 12 horas Predeterminado: 30 minutos |
Máximo: 3 horas Predeterminado: 5 minutos |
Máximo: 12 horas Predeterminado: 30 minutos |
|
Número máximo de intentos de entrega |
Máximo: 16 Predeterminado: 16 |
Máximo: 16 Predeterminado: 16 |
Máximo: 16 Predeterminado: 16 |
Máximo: 64 Predeterminado: 16 |
Modifique la directiva de reintento de consumidor
Inicie sesión en la consola de ApsaraMQ for RabbitMQ.
-
En la página Overview, dentro de la sección Resource Distribution, seleccione una región y haga clic en la instancia deseada.
-
Directiva de reintento de instancia
En la página Instance Details, haga clic en la pestaña Retry Policy y luego en Edit.
En el panel Modify Retry Policy, establezca los valores de Maximum Number of Deliveries y Consumption Timeout Period según los rangos de valores descritos anteriormente.
-
Directiva de reintento de cola
En el panel de navegación izquierdo, haga clic en Queue List y luego en la cola deseada.
En la página Queue Details, haga clic en la pestaña Retry Policy y luego en Edit.
-
En el panel Modify Retry Policy, configure los valores de Inherit Instance Configurations, Maximum Number of Deliveries y Consumption Timeout Period según los rangos de valores descritos anteriormente.

Si una cola hereda la configuración de la instancia, su directiva de reintento depende de la configuración de nivel de instancia. La directiva de reintento de la cola se actualiza cada vez que cambia la configuración de la instancia.
Si una cola no hereda la configuración de la instancia, su directiva de reintento se configura de forma independiente y anula la configuración de nivel de instancia.
-
Haga clic en OK.