1

Je travaille sur une exigence qui me demande d'appeler un point de terminaison spécifique après avoir réussi à obtenir des données. Nous avons atteint cet objectif en utilisant un sujet SNS publié dans une file d'attente SQS qui à son tour appelle un point de terminaison. SNS -> SQS -> Mon point de terminaison (Message Q de processus) -> Appelle le point de terminaison externe pour obtenir des données.AWS SQS Retry Plusieurs fois

Maintenant, nous avons découvert que les données ne sont pas disponibles immédiatement après le traitement de la commande et maintenant l'exigence est de continuer à essayer toutes les 30 secondes pendant 5 fois.

Y a-t-il un moyen d'y parvenir?

À l'heure actuelle, j'ai fait en sorte que Mon point de terminaison qui traite le message à partir de la file d'attente renvoie toujours une erreur afin que le message soit réessayé.

J'ai le délai de visibilité défini à 30 secondes de sorte que le message est ré-essayé toutes les 30 secondes pendant 5 fois.

Existe-t-il un meilleur moyen de réaliser ce que je veux avec mon installation existante? S'il vous plaît aider. Pourquoi ne pas publier un message lorsque ces données sont disponibles, puis utiliser ce message uniquement comme déclencheur?

+1

Si SQS lui-même a besoin d'essayer à nouveau, je pense que ce que vous avez fait est la seule approche. Sinon, modifiez la source du SNS pour envoyer une notification uniquement lorsque "les données sont disponibles". – kosa

+0

Merci, mais le problème est, je ne sais pas que les données sont disponibles jusqu'à ce que je fais l'appel à l'extrémité externe – Viki

+2

* Yat-il un meilleur moyen d'atteindre ce que je veux? * Il n'y a pas vraiment de problème avec cette solution. C'est une utilisation viable pour le délai de visibilité. J'ai une application qui attend 5 minutes entre les tentatives et c'est exactement comment je le gère. Étant donné que SQS est conçu avec une limite intégrée de telle sorte que chaque file d'attente est "seulement" autorisée à avoir 120 000 messages qui ont déjà été reçus au moins une fois et ont leurs temporisateurs de temporisation de visibilité à tout moment ... semble qu'ils l'ont conçu pour être utilisé de cette façon. –

Répondre

0

Ensuite, le message SQS n'échouera pas la première fois.

Si pour une raison quelconque ce n'est pas possible (ce qui ne devrait pas être le cas, mais YNK), alors oui, lancez une erreur comme vous l'avez fait, et elle réessayera. Ça devrait marcher.