He configurado una cola de mensajes fallidos (DLQ) de Amazon Simple Queue Service (Amazon SQS). Mis mensajes de Amazon SQS se trasladaron inesperadamente a la cola DLQ y quiero saber por qué.
Resolución
Es posible que los mensajes de Amazon SQS se transfieran a la cola DLQ por los siguientes motivos.
El valor de ReceiveCount supera el valor de maxReceiveCount
El valor predeterminado de maxReceiveCount es 10. Cuando el valor de ReceiveCount supera el valor de maxReceiveCount de una cola, Amazon SQS traslada el mensaje a la cola DLQ. Para resolver este problema, se recomienda establecer el valor de maxReceiveCount lo suficientemente alto como para permitir los reintentos de Amazon SQS. Por ejemplo, si el valor de maxReceiveCount se establece en 1, si no se recibe un mensaje, el mensaje se traslada a la cola DLQ.
La función de Lambda requiere una configuración adicional
Si usas una función de AWS Lambda para procesar los mensajes de la cola de Amazon SQS, es posible que tengas que volver a configurar la función. Para obtener más información, consulta ¿Por qué la función de Lambda vuelve a intentar enviar mensajes válidos de Amazon SQS y los coloca en la cola de mensajes fallidos?
Has usado la Consola de administración de AWS para ver los mensajes de SQS
Los mensajes de SQS que ves en la Consola de administración de AWS pueden trasladarse a la cola DLQ porque se contabilizan en la política de redireccionamiento de la cola. Puedes aumentar el valor de Recepciones máximas de la política de redireccionamiento de la cola DLQ hasta 1000. Para obtener más información, consulta Configure a dead-letter queue using the Amazon SQS console (Configuración de una cola de mensajes fallidos mediante la consola de Amazon SQS).
Has intentado eliminar los mensajes de SQS con un ReceiptHandle caducado o después del tiempo de espera de visibilidad
Los mensajes se transfieren a la cola DLQ después de los reintentos. El error QueueDoesNotExist puede producirse al realizar una operación DeleteMessage con un ReceiptHandle anterior de la cola principal. Elimina los mensajes dentro del intervalo VisibilityTimeout configurado. Para obtener más información, consulta ¿Cómo puedo solucionar el error «QueueDoesNotExist» cuando realizo llamadas a la API en relación con mi cola de Amazon SQS?
Información relacionada
Using dead-letter queues in Amazon SQS (Uso de colas de mensajes fallidos en Amazon SQS)