¿Cómo puedo evitar que se acumulen mensajes en mi cola de Amazon SQS?

Última actualización: 26/08/2021

La cantidad de mensajes acumulados en mi cola de Amazon Simple Queue Service (Amazon SQS) está aumentando. ¿Por qué sucede esto y cómo puedo evitarlo?

Descripción corta

Colas estándar y FIFO de SQS

La acumulación de mensajes aumenta en las siguientes circunstancias:

  • Los productores envían mensajes a un ritmo más rápido del que se consumen.
  • Los receptores de mensajes no los eliminan dentro del periodo tiempo de espera de visibilidad. Cuando se sondea la cola de SQS, los mensajes vuelven a aparecer en la cola.

Colas FIFO de SQS

En el caso de las colas FIFO (First-In-First-Out [Primero en entrar, primero en salir]) de SQS, un aumento en la acumulación de mensajes también puede ser el resultado de una de las siguientes situaciones:

  • Se ha alcanzado el límite de 20 000 mensajes en el búfer de la cola FIFO.
  • Un mensaje que pertenece a un grupo de mensajes se queda atascado en un consumidor, lo que impide que se procesen otros mensajes del mismo grupo de mensajes.

Resolución

Siga estas prácticas recomendadas para evitar que aumente la cantidad de mensajes acumulados.

Colas estándar y FIFO de SQS

  • Establezca el tiempo de espera de visibilidad óptimo de la cola de SQS para permitir que el consumidor elimine los mensajes después de procesarlos dentro del periodo de espera de visibilidad. Si no sabe cuánto tiempo lleva procesar un mensaje, cree un latido para el proceso del consumidor. Especifique el tiempo de espera de visibilidad inicial (por ejemplo, 2 minutos). A continuación, si el consumidor necesita más tiempo para procesar el mensaje, continúe aumentando el tiempo de espera de visibilidad mediante la llamada a la API ChangeMessageVisibility.
  • Aumente el tamaño del lote al realizar llamadas a la API ReceiveMessage. Defina el valor del parámetro MaxNumberOfMessages en más de 1 y hasta un máximo de 10.
  • Monitoree la métrica de la cola de SQS Approximate Number of Messages Visible (Número aproximado de mensajes visibles). Esta métrica permite ver si los productores de mensajes producen mensajes a un ritmo superior al que los consumidores pueden consumirlos. Para escalar horizontalmente, aumente el número de consumidores o clientes que consumen la cola de SQS o aumente el número de subprocesos que sondean la cola.

Colas FIFO de SQS

Búfer de 20 000 mensajes

Las colas FIFO permiten un máximo de 20 000 mensajes en tránsito. Los mensajes en tránsito son los mensajes recibidos de una cola por parte de un consumidor que aún no se han eliminado de la cola. Si alcanza la cuota de 20 000, Amazon SQS no devuelve mensajes de error. Una cola FIFO examina los primeros 20 000 mensajes para determinar los grupos de mensajes disponibles. Si tiene mensajes acumulados en un solo grupo de mensajes, no podrá consumir mensajes de otros grupos de mensajes hasta que consuma los mensajes acumulados.

Escalado en grupos de mensajes

Los mensajes que pertenecen al mismo grupo de mensajes se procesan uno por uno, en el orden relativo al grupo de mensajes. Al recibir mensajes con diferentes ID de grupo de mensajes, Amazon SQS intenta devolver en primer lugar tantos mensajes con el mismo ID de grupo de mensajes como sea posible. Esto permite a otros consumidores procesar mensajes con un ID de grupo de mensajes diferente. Cuando los mensajes que pertenecen a un ID de grupo de mensajes específico no se pueden ver, ningún otro consumidor puede procesar mensajes con el mismo ID de grupo de mensajes. Sin embargo, los consumidores pueden procesar mensajes de otros grupos de mensajes. Intente aumentar el número de grupos de mensajes en los que el orden no sea importante.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?