Uso de colas de mensajes fallidos en Amazon SQS
Amazon SQS admite una cola de mensajes fallidos, que es una cola a la que otras colas de origen pueden enviar mensajes que no se procesan correctamente. Las colas de mensajes fallidos son útiles para depurar su aplicación porque le permiten aislar los mensajes no consumidos para determinar por qué su procesamiento no se realizó correctamente. Para obtener un rendimiento óptimo, se recomienda mantener la cola de origen y la cola de mensajes fallidos dentro de la misma región y Cuenta de AWS. Una vez que los mensajes están en cola de mensajes fallidos, puede:
-
Examinar los registros para ver si hay excepciones que podrían haber causado el traslado de mensajes a una cola de mensajes fallidos.
-
Analizar el contenido de los mensajes movidos a la cola de mensajes fallidos para diagnosticar problemas de aplicaciones.
-
Determinar si ha concedido al consumidor tiempo suficiente para procesar los mensajes.
-
Sacar los mensajes de la cola de mensajes fallidos mediante la redirección de la cola de mensajes fallidos.
Primero deberá crear una nueva cola antes de configurarla como una cola de mensajes fallidos. Para obtener información sobre la configuración de una cola de mensajes fallidos mediante la consola de Amazon SQS, consulte Obtenga información sobre cómo configurar una cola de mensajes fallidos mediante la consola de Amazon SQS.. Para obtener ayuda con las colas de mensajes fallidos, por ejemplo, cómo configurar una alarma para todos los mensajes que se mueven a una cola de mensajes fallidos, consulte Creación de alarmas para colas de mensajes fallidos mediante Amazon CloudWatch.
Uso de políticas para colas de mensajes fallidos
Utilice una política de redirección para especificar el maxReceiveCount
. maxReceiveCount
es el número de veces que un consumidor puede recibir un mensaje de una cola de origen antes de que se traslade a la cola de mensajes fallidos. Por ejemplo, si maxReceiveCount
se establece en un valor bajo, como 1, cualquier error en la recepción de un mensaje hará que este se traslade a la cola de mensajes fallidos. Para asegurarse de que su sistema es resiliente frente a los errores, establezca maxReceiveCount
lo suficientemente alto como para permitir un número suficiente de reintentos.
La política de permiso de redireccionamiento especifica qué colas de origen pueden acceder a la cola de mensajes fallidos. Puede elegir entre permitir todas las colas de origen, permitir colas de origen específicas o denegar que todas las colas de origen usen la cola de mensajes fallidos. De forma predeterminada, se permite que todas las colas de origen utilicen la cola de mensajes fallidos. Si elige permitir colas específicas mediante la opción byQueue
, puede especificar hasta diez colas de origen con el nombre de recurso de Amazon (ARN) de la cola de origen. Si especifica denyAll
, la cola no se puede utilizar como una cola de mensajes fallidos.
Descripción de los períodos de retención de mensajes en la cola de mensajes fallidos
En el caso de las colas estándar, la caducidad de un mensaje siempre se basa en su marca temporal original. Cuando un mensaje se mueve a una cola de mensajes fallidos, la marca temporal de la cola no se modifica. La métrica ApproximateAgeOfOldestMessage
indica cuándo el mensaje pasó a la cola de mensajes fallidos, no cuándo se envió originalmente. Por ejemplo, supongamos que un mensaje pasa un día en la cola original antes de ser trasladado a una cola de mensajes fallidos. Si el periodo de retención de la cola de mensajes fallidos es de cuatro días, el mensaje se elimina de la cola de mensajes fallidos al cabo de tres días y ApproximateAgeOfOldestMessage
es de tres días. Por lo tanto, se recomienda establecer siempre un periodo de retención de una cola de mensajes fallidos superior al periodo de retención de la cola original.
Para las colas FIFO, la marca temporal de entrada se restablece cuando el mensaje se mueve a una cola de mensajes fallidos. La métrica ApproximateAgeOfOldestMessage
indica cuándo el mensaje ha pasado a la cola de mensajes fallidos. En el mismo ejemplo anterior, el mensaje se elimina de la cola de mensajes fallidos al cabo de cuatro días y ApproximateAgeOfOldestMessage
es de cuatro días.