Comment puis-je corriger les erreurs « ReceiptHandleIsInvalid » et « InvalidParameterValue » lorsque j'utilise l'appel d'API DeleteMessage d'Amazon SQS ?

Lecture de 3 minute(s)
0

Je reçois un message d'erreur « ReceiptHandleIsInvalid » ou « InvalidParameterValue » lorsque j'essaie de supprimer des messages de ma file d'attente Amazon Simple Queue Service (Amazon SQS).

Brève description

Lorsque vous recevez un message issu d'une file d'attente Amazon SQS, vous recevez également un identifiant de gestion de la réception associé à ce message pour les files d'attente « premier entré, premier sorti » et standard. Le descripteur de réception est obligatoire lorsque vous supprimez ou modifiez la visibilité du message.

Si le descripteur de réception est incorrect, vous recevez un message d'erreur similaire à cet exemple :

« Une erreur s'est produite (le descripteur de réception n'est pas valide) lors de l'appel de l'opération de suppression du message : Le descripteur de réception saisi, VOTRE DESCRIPTEUR DE REÇU, n'est pas un descripteur de reçu valide. »

Si le descripteur de réception a expiré, vous recevez un message d'erreur similaire à cet exemple :

« Une erreur s'est produite (InvalidParameterValue) lors de l'appel de l'opération DeleteMessage : La valeur VOTRE DESCRIPTEUR DE RÉCEPTION pour le paramètre ReceiptHandle n'est pas valide. Raison : le descripteur de réception a expiré. »

La visibilité du descripteur de réception expire après un certain délai. Lorsque le délai de visibilité expire, le message retourne dans la file d'attente. Lorsque vous recevez à nouveau le message depuis un consommateur, il s'accompagne d'un nouveau descripteur de réception. Cette erreur se produit, car vous avez utilisé un ancien descripteur de réception au lieu du plus récent.

Remarque : les anciens descripteur de réception peuvent fonctionner lorsque vous utilisez des files d'attente SQS standard. Cependant, il est recommandé d'utiliser le descripteur de réception le plus récent pour les appels d'API DeleteMessage.

Résolution

Pour éviter les erreurs liées aux descripteur de réception incorrects ou expirés, utilisez le bon descripteur afin de supprimer le message avant l'expiration du délai de visibilité de la file d'attente SQS.

Si vous recevez plusieurs fois le même message, consultez la dernière réponse à l'appel d'API ReceiveMessage et identifiez la valeur ReceiptHandle. Utilisez ensuite la valeur ReceiptHandle identifiée lorsque vous effectuez l'appel d'API DeleteMessage.

Vous pouvez également recevoir cette erreur lorsque vous effectuez l'appel d'API DeleteMessage :

« Une erreur s'est produite (le descripteur de réception n'est pas valide) lors de l'appel de l'opération de suppression du message : Le descripteur de réception, VOTRE DESCRIPTEUR DE RÉCEPTION, n'est pas valide pour cette file d'attente. »

Cette erreur se produit lorsque vous essayez de supprimer un message dont le descripteur de réception provient d'une autre file d'attente SQS. Pour éviter cette erreur, utilisez le bon descripteur de réception issu de la file d'attente SQS contenant le message.

Informations connexes

Bonnes pratiques relatives à Amazon SQS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 6 mois