Délai de SQS visibilité d'Amazon - Amazon Simple Queue Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Délai de SQS visibilité d'Amazon

Lorsqu'un consommateur reçoit un message d'une SQS file d'attente Amazon, le message reste dans la file d'attente mais devient temporairement invisible pour les autres consommateurs. Cette invisibilité temporaire est contrôlée par le délai de visibilité, un mécanisme qui empêche les autres consommateurs de traiter le même message pendant qu'il est en cours de traitement. Amazon SQS ne supprime pas automatiquement le message ; le consommateur doit plutôt supprimer explicitement le message à l'aide de cette DeleteMessage action une fois qu'il a été traité avec succès.

Graphique chronologique indiquant la façon dont les demandes sont traitées pendant le délai de visibilité

Définition du délai de visibilité

Le délai de visibilité sur Amazon SQS commence dès qu'un message est renvoyé à un consommateur. Pendant ce temps, le consommateur est censé traiter et supprimer le message. Toutefois, si le consommateur ne supprime pas le message avant l'expiration du délai de visibilité, le message redevient visible dans la file d'attente et peut être récupéré par un autre consommateur.

Chaque SQS file d'attente Amazon a un délai de visibilité par défaut de 30 secondes, mais vous pouvez ajuster ce paramètre en fonction des besoins de votre application. Il est généralement préférable de définir le délai de visibilité de manière à ce qu'il corresponde au temps maximum requis par votre application pour traiter et supprimer un message. Vous pouvez également configurer un délai de visibilité spécifique pour des messages individuels sans modifier le paramètre de délai d'expiration global de la file d'attente.

Messages et quotas en vol

Sur AmazonSQS, les messages en cours de vol sont ceux qui ont été reçus d'une file d'attente par un consommateur mais qui n'ont pas encore été supprimés. Pour les files d'attente standard, le nombre de messages en cours de vol est limité, qui peut atteindre un maximum d'environ 120 000, en fonction du trafic des files d'attente et de l'arriéré de messages.

  • Sondage court : si cette limite est atteinte lors de l'utilisation d'un sondage court, Amazon SQS renvoie un OverLimit message d'erreur indiquant qu'aucun message supplémentaire ne peut être reçu tant que certains messages en cours de vol ne sont pas supprimés.

  • Interrogation longue : si vous utilisez une interrogation longue, Amazon SQS ne renvoie pas d'erreur lorsque la limite de messages à bord est atteinte. Au lieu de cela, il ne renverra aucun nouveau message tant que le nombre de messages en vol ne sera pas inférieur à la limite.

Pour gérer efficacement les messages en vol et éviter d'atteindre ce quota :

  1. Suppression rapide — Assurez-vous que les messages sont supprimés dès qu'ils sont traités avec succès afin de réduire le nombre de messages en vol.

  2. Surveillez avec CloudWatch : utilisez Amazon CloudWatch pour surveiller le nombre de messages en vol et configurer des alarmes pour vous avertir lorsque vous approchez de la limite.

  3. Répartir la charge — Envisagez d'augmenter le nombre de files d'attente si vous traitez un volume élevé de messages, afin de répartir la charge et d'éviter les engorgements.

  4. Demander une augmentation de quota — Si nécessaire, envoyez une demande d'assistance à AWS pour augmenter le quota de messages en cours de vol pour votre application.

Comprendre le délai d'expiration de la visibilité en mode standard et dans les files d'FIFOattente

Le délai de visibilité sur Amazon SQS gère le traitement des messages en mode standard et dans les FIFO files d'attente afin d'éviter le double traitement et de maintenir l'ordre des messages.

  • Files d'attente standard : dans les files d'attente standard, le délai de visibilité empêche plusieurs clients de traiter le même message simultanément. Cependant, en raison du modèle de livraison au moins une fois d'AmazonSQS, il n'existe aucune garantie absolue qu'un message ne sera pas livré plus d'une fois pendant la période d'expiration de visibilité.

  • FIFOfiles d'attente — Dans les files d'attente FIFO (premier entré, premier sorti), le délai de visibilité garantit que les messages portant le même identifiant de groupe de messages sont traités dans le bon ordre. Si un consommateur ne supprime pas de message avant l'expiration du délai de visibilité, aucun nouveau message portant le même identifiant de groupe n'est délivré tant que le message ne redevient visible ou n'est pas supprimé. Pour les FIFO files d'attente, il est particulièrement important de gérer soigneusement le délai de visibilité afin de préserver l'ordre des messages et l'intégrité du traitement.

Que se passe-t-il si un consommateur ne parvient pas à traiter un message

Si un client ne parvient pas à traiter un message, en raison de problèmes tels que des erreurs d'application, des pannes ou des problèmes de connectivité, et ne supprime pas le message avant l'expiration du délai de visibilité, le message redevient automatiquement visible dans la file d'attente. Une fois visible, le message peut être récupéré par le même consommateur ou par un autre pour une autre tentative de traitement. Ce processus garantit que les messages ne sont pas perdus même en cas d'échec du traitement initial.

Cependant, il est important de noter que si le délai de visibilité est trop élevé, cela retardera la réapparition des messages non traités, ce qui peut ralentir les tentatives. Il est essentiel de définir un délai de visibilité approprié en fonction du temps de traitement prévu pour traiter les messages dans les meilleurs délais.

Modification et fin du délai de visibilité

Modifiez ou annulez le délai de visibilité dans Amazon à SQS l'aide de l'ChangeMessageVisibilityaction permettant de gérer le traitement des messages en fonction de vos besoins.

  • Modification du délai d'attente : si le délai de visibilité initial est insuffisant, vous pouvez l'ajuster à l'aide de l'action. ChangeMessageVisibility Cette action vous permet de raccourcir ou de prolonger le délai d'attente en fonction de vos besoins de traitement.

  • Fin du délai d'attente : si vous décidez de ne pas traiter un message reçu, vous pouvez mettre fin à son délai de visibilité en réglant l'VisibilityTimeoutaction à 0 seconde. ChangeMessageVisibility Cela met immédiatement le message à la disposition des autres consommateurs pour qu'ils puissent le traiter.

Bonnes pratiques

Suivez les bonnes pratiques suivantes pour gérer les délais de visibilité sur AmazonSQS, notamment en définissant, en ajustant et en prolongeant les délais, ainsi que pour gérer les messages non traités à l'aide de files d'attente de lettres mortes (). DLQs

  • Réglage et ajustement du délai d'attente. Commencez par définir le délai de visibilité pour qu'il corresponde à la durée maximale dont votre application a généralement besoin pour traiter et supprimer un message. Si vous n'êtes pas sûr du délai de traitement exact, commencez par un délai plus court (par exemple, 2 minutes) et prolongez-le si nécessaire. Vous pouvez implémenter un mécanisme de pulsation pour prolonger périodiquement le délai de visibilité, en veillant à ce que le message reste invisible jusqu'à la fin du traitement. Cela permet de minimiser les délais de retraitement des messages non traités et d'éviter une visibilité prématurée.

  • Prolongation du délai d'attente et gestion de la limite de 12 heures. Si votre délai de traitement varie ou peut dépasser le délai initialement défini, utilisez l'ChangeMessageVisibilityaction pour prolonger le délai de visibilité pendant le traitement du message. N'oubliez pas que le délai de visibilité est limité à 12 heures à compter de la première réception du message. La prolongation du délai d'attente ne rétablit pas cette limite de 12 heures. Si votre traitement prend plus de temps que ce délai, pensez à utiliser AWS Step Functions ou en divisant la tâche en étapes plus petites.

    En pratique, le réglage immédiat du délai de visibilité sur la limite complète de 12 heures peut échouer s'il y a un délai entre la réception du message et la mise à jour du délai d'expiration. Pour éviter cela, utilisez une valeur légèrement inférieure, telle que 43 195 secondes.

  • Gestion des messages non traités Pour gérer les messages qui échouent à plusieurs tentatives de traitement, configurez une file d'attente de lettres mortes (). DLQ Cela garantit que les messages qui ne peuvent pas être traités après plusieurs tentatives sont capturés séparément pour une analyse ou un traitement plus approfondis, empêchant ainsi leur circulation répétée dans la file d'attente principale.