¿Cómo puedo solucionar los errores «ReceiptHandleIsInvalid» e «InvalidParameterValue» cuando utilizo la llamada a la API DeleteMessage de Amazon SQS?

3 minutos de lectura
0

Cuando intento eliminar mensajes de mi cola de Amazon Simple Queue Service (Amazon SQS), se muestra el error «ReceiptHandleIsInvalid» o «InvalidParameterValue».

Breve descripción

Cuando se muestre un mensaje de una cola de Amazon SQS, recibirá también un identificador de recepción para el mensaje, ya se trate de una cola estándar o de una cola FIFO (el primero en entrar es el primero en salir). El identificador de recepción se necesita para eliminar un mensaje o cambiar su visibilidad.

Si el identificador de recepción es incorrecto, aparecerá un error similar al siguiente:

«An error occurred (ReceiptHandleIsInvalid) when calling the DeleteMessage operation: The input receipt handle 'YOUR RECEIPT HANDLE' is not a valid receipt handle.»

Si el identificador de recepción ha vencido, aparecerá un error similar al siguiente:

«An error occurred (InvalidParameterValue) when calling the DeleteMessage operation: Value 'YOUR RECEIPT HANDLE' for parameter ReceiptHandle is invalid. Reason: The receipt handle has expired.»

Un identificador de recepción vence tras un período de tiempo de espera de visibilidad. Cuando vence el tiempo de espera de visibilidad, el mensaje vuelve a la cola. Si se vuelve a mostrar este mensaje de un consumidor, obtendrá un nuevo identificador de recepción. Este error se debe a que ha utilizado un identificador de recepción anterior en lugar del identificador de recepción más reciente.

Nota: Los identificadores de recepción anteriores pueden funcionar correctamente si utiliza colas SQS estándar. Sin embargo, se recomienda utilizar el identificador de recepción más reciente para las llamadas a la API DeleteMessage.

Solución

A fin de evitar errores debidos a que el identificador de recepción ha vencido o no es válido, utilice el identificador de recepción correcto para eliminar el mensaje dentro del período de tiempo de espera de visibilidad de la cola de SQS.

Si un mensaje se muestra varias veces, revise la respuesta de la llamada a la API ReceiveMessage más reciente e identifique el valorReceiptHandle. A continuación, utilice el valor ReceiptHandle identificado cuando realice la llamada a la API DeleteMessage.

También puede que se muestre el siguiente error al realizar la llamada a la API DeleteMessage:

«An error occurred (ReceiptHandleIsInvalid) when calling the DeleteMessage operation: The receipt handle "YOUR RECEIPT HANDLE" is not valid for this queue.»

Este error se produce al intentar eliminar un mensaje con un identificador de recepción que proviene de otra cola de SQS distinta. Para evitar este error, utilice el identificador de recepción correcto de la cola de SQS en la que se encuentra el mensaje.

Información relacionada

Best practices for Amazon SQS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año