Ir para o conteúdo

Como solucionar os erros "ReceiptHandleIsInvalid" e "InvalidParameterValue" ao usar a chamada de API DeleteMessage do Amazon SQS?

3 minuto de leitura
0

Eu recebo um erro "ReceiptHandleIsInvalid" ou "InvalidParameterValue" quando excluo mensagens de uma fila do Amazon Simple Queue Service (Amazon SQS).

Breve descrição

Ao receber uma mensagem de uma fila do Amazon SQS, você também recebe um identificador de recebimento dessa mensagem para as filas padrão e FIFO (primeiro a entrar, primeiro a sair). O identificador de recebimento é necessário ao excluir ou alterar a visibilidade de mensagens.

Se o identificador do recibo estiver incorreto, você receberá uma mensagem de erro semelhante ao exemplo a seguir:

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

Se o identificador do recibo estiver expirado, você receberá uma mensagem de erro semelhante ao exemplo a seguir:

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

Um identificador de recebimento expira após o tempo limite de visibilidade. Quando o tempo limite de visibilidade expira, a mensagem retorna à fila. Ao receber a mensagem novamente de um consumidor, você recebe um novo identificador de recebimento. Os erros “invalidParameterValue” ocorrem porque você usou um identificador de recebimento mais antigo em vez de um mais recente.

Importante: É uma prática recomendada usar o identificador de recebimento mais recente para operações de API DeleteMessage. os identificadores de recebimento mais antigos podem obter êxito quando você usa filas padrão do SQS.

Resolução

Para evitar receber erros por identificador de recebimento incorreto ou expirado, use o identificador de recebimento correto para excluir a mensagem dentro do tempo limite de visibilidade da fila do SQS.

Se você receber uma mensagem várias vezes, revise a resposta mais recente da operação da API ReceiveMessage e identifique o valor do ReceiptHandle. Em seguida, use o valor ReceiptHandle identificado quando for chamar a operação de API DeleteMessage.

Além disso, é possível receber esse erro ao fazer a chamada de API DeleteMessage:

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

Esse erro ocorre quando você exclui uma mensagem com um identificador de recebimento de uma fila diferente do SQS. Para evitar esse erro, use o identificador de recebimento correto da fila do SQS que contém a mensagem.

Informações relacionadas

Práticas recomendadas do Amazon SQS