Types de file d'attente

Amazon SQS propose deux types de files d'attente pour différents besoins d'applications :

Files d'attente standard

Débit illimité : les files d'attente standard prennent en charge un nombre pratiquement illimité de transactions par seconde (TPS) pour chaque action d'API.

Remise au moins une fois : un message est remis au moins une fois, mais il peut arriver qu'il soit remis en plusieurs exemplaires.

Ordre dans la mesure du possible : il peut arriver que les messages soient remis dans un ordre différent de celui de leur envoi.

Files d'attente FIFO

Haut débit : par défaut, les files d'attente FIFO prennent en charge jusqu'à 300 messages par secondes (300 opérations d'envoi, de réception ou de suppression par seconde). Si vous traitez par lots 10 messages par opération (maximum), les files d'attente FIFO peuvent prendre en charge jusqu'à 3 000 messages par seconde. Pour demander une augmentation de la limite, soumettez une demande de support.

Traitement en une seule fois : un message est remis une fois et reste disponible jusqu'à son traitement et sa suppression par un destinataire. Les doublons ne sont pas insérés dans la file d'attente.

Premier entré, premier sorti : l'ordre dans lequel les messages sont envoyés et reçus est rigoureusement conservé (c'est-à-dire premier entré, premier sorti).

sqs-what-is-sqs-standard-queue-diagram
sqs-what-is-sqs-fifo-queue-diagram

Vous pouvez utiliser les files d'attente de messages standard dans de nombreux scénarios, tant que votre application parvient à traiter les messages qui arrivent plusieurs fois et dans le désordre, par exemple :

  • Découplez les demandes utilisateur en direct et le travail intensif en arrière-plan : permettez aux utilisateurs de charger un support pendant le redimensionnement ou le codage.
  • Allouez des tâches à plusieurs nœuds de travail : traitez un grand nombre de demandes de validation de carte de paiement.
  • Organisez les messages en lots en vue de leur traitement futur : planifiez l'ajout d'entrées multiples dans une base de données.

Les files d'attente FIFO sont conçues pour améliorer l'échange de messages entre applications lorsque l'ordre des opérations et des événements est essentiel ou lorsque les doublons ne peuvent être tolérés, par exemple :

  • Veiller à ce que les commandes entrées par l'utilisateur soient exécutées dans l'ordre approprié.
  • Afficher le prix correct d'un produit en envoyant les modifications de prix dans le bon ordre.
  • Empêcher un étudiant de s'inscrire à un cours avant d'avoir créé un compte.

Fonctionnalités

  • Nombre illimité de files d'attente et de messages : créer un nombre illimité de files d'attente Amazon SQS avec un nombre illimité de messages dans n'importe quelle région
  • Taille du corps de message : les corps des messages peuvent contenir jusqu'à 256 Ko de texte dans n'importe quel format. Chaque « lot » de 64 Ko de données libres est facturé comme 1 demande. Par exemple, un seul appel API avec des données libres de 256 Ko sera facturé comme quatre demandes. Pour envoyer des messages de plus de 256 Ko, vous pouvez utiliser Amazon SQS Extended Client Library for Java qui utilise Amazon S3 pour stocker le corps du message. Une référence au corps du message est envoyée avec SQS.
  • Lots : envoyer, recevoir ou supprimer des messages par lots d'un maximum de 10 messages ou 256 Ko. Il vous en coûtera autant pour un lot que pour un seul message, ce qui signifie que SQS peut être encore plus intéressant financièrement pour les clients qui choisissent le traitement par lots.
  • L'attente de longue durée (« long polling ») réduit un polling étranger pour minimiser les coûts tout en recevant de nouveaux messages aussi vite que possible. Lorsque votre file d'attente est vide, les demandes d'attente de longue durée (« long polling ») attendent jusqu'à 20 secondes l'arrivée du prochain message. Les demandes d'attente de longue durée (« long polling ») coûtent autant que les demandes standard.
  • Conserver les messages dans les files d'attente jusqu'à 14 jours.
  • Envoyer et lire des messages simultanément
  • Verrouillage des messages : lorsqu'un message est reçu, il reste verrouillé pendant toute la durée de son traitement. Ceci empêche d'autres ordinateurs de traiter le message simultanément. Si le traitement du message échoue, le verrouillage expirera et le message sera à nouveau disponible.
  • Partage de files d'attente : partager en toute sécurité des files d'attente Amazon SQS de manière anonyme ou avec des comptes AWS spécifiques. Le partage de file d'attente peut aussi est restreint par adresse IP et heure locale.
  • Chiffrement côté serveur (SSE) : protéger le contenu des messages présents dans les files d'attente Amazon SQS à l'aide de clés gérées dans AWS Key Management Service (AWS KMS). La fonctionnalité SSE chiffre les messages dès leur arrivée dans les files d'attente Amazon SQS. Les messages sont stockés sous cette forme chiffrée et Amazon SQS assure leur déchiffrement uniquement lorsqu'ils sont transmis à un client final autorisé.
  • Files d'attente de lettres mortes (DLQ, Dead Letter Queue) : gérer les messages qui n'ont pas été traités avec succès par un consommateur grâce aux files d'attente de lettres mortes. Lorsqu'un message dépasse le nombre maximal de réceptions, il est déplacé vers la file d'attente de lettre morte (DLQ, Dead Letter Queue) associée à la file d'attente d'origine. Configurez des processus consommateurs distincts pour la DLQ, qui permettent de mieux analyser les raisons du blocage des messages. Les DLQ doivent être du même type que la file d'attente source (standard ou FIFO).

Utilisation d'Amazon SQS avec d'autres services Web d'infrastructure AWS

Vous pouvez utiliser la mise en file d'attente de messages d'Amazon SQS avec d'autres services AWS, tels que Redshift, DynamoDB, RDS, EC2, ECS, Lambda et S3, pour rendre les applications distribuées plus scalables et fiables. Voici quelques modèles de conception courants :

  • Files d'attente de travail : découpler les composants d'une application distribuée qui peut ne pas traiter la même quantité de travail simultanément.
  • Opérations de tampon et de lot : ajouter de la scalabilité et de la fiabilité à votre architecture, et fluidifier les pics de volume temporaires sans perdre les messages et sans augmenter la latence.
  • Déchargement de demande : déplacer les opérations lentes des chemins de demande interactive en mettant la demande en file d'attente.
  • Distribution : combiner SQS avec Simple Notification Service (SNS) pour envoyer des copies identiques d'un message à plusieurs files d'attente en parallèle.
  • Priorité : utiliser des files d'attente séparées pour classer les tâches par ordre de priorité.
  • Scalabilité : les files d'attente de messages découplant vos processus, il est facile d'augmenter la vitesse d'envoi et de réception des messages. En effet, il suffit d'ajouter un autre processus.
  • Résilience : lorsqu'une partie de votre système est défaillante, il n'est pas nécessaire de démonter le système dans son intégralité. Les files d'attente de messages découplent les composants de votre système. Par conséquent, si un processus lisant les messages depuis la file d'attente est défaillant, les messages peuvent toujours être ajoutés à la file d'attente pour être traités lors de la récupération du système.

Utilisation prévue et restrictions

Votre utilisation de ce service est soumise au Contrat client Amazon Web Services.

En savoir plus sur la tarification d'Amazon SQS

Visiter la page de tarification
Prêt à concevoir ?
Démarrage avec Amazon SQS
D'autres questions ?
Contactez-nous