Qu'est-ce qu'une file d'attente de lettres mortes ?

Une file d'attente de lettres mortes (DLQ) est un type spécial de file d'attente de messages qui stocke temporairement les messages qu'un système logiciel ne peut pas traiter en raison d'erreurs. Les files d'attente de messages sont des composants logiciels qui prennent en charge la communication asynchrone d'un système distribué. Elles vous permettent d'envoyer des messages entre services logiciels quel que soit le volume et n'exigent pas que le destinataire du message soit toujours disponible. Une file d'attente de lettres mortes stocke spécifiquement les messages erronés sans destination ou qui ne peuvent pas être traités par le destinataire prévu.

Pourquoi les files d'attente de lettres mortes sont-elles importantes ?

Les files d'attente de lettres mortes (DLQ) coexistent avec les files d'attente de messages normales. Elles servent d'espace de stockage temporaire pour les messages erronés et en état d'échec. Les DLQ évitent le trop-plein de messages non traités dans la file d'attente source.

Prenons l'exemple d'un logiciel qui possède une file d'attente de messages normale et une DLQ. Le logiciel utilise la file d'attente normale pour stocker les messages qu'il prévoit d'envoyer vers une destination. Si le destinataire ne répond pas ou ne traite pas les messages envoyés, le logiciel les place dans la file d'attente de lettres mortes.

Le transfert de messages vers le pipeline de DLQ peut avoir deux raisons : un contenu erroné du message et des changements dans le système du destinataire.

Contenu erroné du message

Un message sera transféré vers la DLQ si le message transmis est erroné. L'état du matériel, du logiciel et du réseau peut corrompre les données envoyées. Par exemple, des interférences matérielles modifient légèrement certaines informations pendant la transmission. La corruption inattendue des données peut amener le destinataire à rejeter ou ignorer le message.

Changements dans le système du destinataire

Un message peut également être transféré vers une DLQ si le logiciel destinataire a subi des modifications dont l'expéditeur n'a pas connaissance. Par exemple, vous pouvez tenter de mettre à jour les informations d'un client en envoyant un message à CUST_ID_005. Toutefois, le destinataire peut ne pas traiter le message entrant, car le client a été supprimé de la base de données du système.

Quels sont les avantages d'une file d'attente de lettres mortes ?

Nous présentons ensuite les avantages des files d'attente de lettres mortes (DLQ).

Coûts de communication réduits

Les files d'attente de messages normales ou standard continuent de traiter les messages jusqu'à l'expiration de la période de conservation. Cela permet d'assurer le traitement continu des messages et de réduire au maximum les risques de blocage de votre file d'attente.

Toutefois, si votre système traite des milliers de messages, un grand nombre de messages d'erreur augmentera les frais généraux de communication et encombrera le système de communication. Au lieu d'essayer de traiter les messages en état d'échec jusqu'à leur expiration, il est préférable de les placer dans une file d'attente de lettres mortes après quelques tentatives de traitement. 

Résolution des problèmes améliorée

Lorsque vous déplacez des messages erronés vers la DLQ, vos développeurs peuvent se concentrer sur l'identification des causes des erreurs. Ils peuvent rechercher les raisons pour lesquelles le destinataire n'a pas pu traiter les messages, appliquer les correctifs et effectuer de nouvelles tentatives de transmission des messages.

Par exemple, un logiciel bancaire peut envoyer quotidiennement des milliers de dossiers de demandes de carte de crédit à son système backend pour approbation. Le système backend reçoit les demandes mais ne peut pas toutes les traiter, car il manque des informations. Au lieu d'effectuer des tentatives interminables, le logiciel déplace les messages vers la DLQ jusqu'à ce que l'équipe informatique résolve le problème. Cela permet au système de traiter et de transmettre les messages restants sans problèmes de performances. 

Dans quelles situations faut-il utiliser une file d'attente de lettres mortes ?

Vous pouvez utiliser une file d'attente de lettres mortes (DLQ) si votre système présente les problèmes suivants. 

Files d'attente non ordonnées

Vous pouvez utiliser des DLQ lorsque vos applications ne dépendent pas d'un ordre. Même si les DLQ vous aident à résoudre les opérations de transmission de messages incorrectes, vous devez continuer à surveiller vos files d'attente et à renvoyer les messages en état d'échec. 

Files d'attente FIFO

L'ordre des messages est important dans les files d'attente FIFO (premier arrivé, premier sorti). Chaque message doit être traité avant de transmettre le message suivant. Vous pouvez utiliser des files d'attente de lettres mortes avec des files d'attente FIFO, mais votre implémentation DLQ doit également être de type FIFO.

Dans quelles situations ne faut-il pas utiliser de file d'attente de lettres mortes ?

Vous ne devez pas utiliser de file d'attente de lettres mortes (DLQ) pour des files d'attente non ordonnées si vous souhaitez fixer un nombre illimité de tentative de transmission des messages. Par exemple, n'utilisez pas de file d'attente de lettres mortes si votre programme doit attendre qu'un processus dépendant soit actif ou disponible. 

De la même manière, n'utilisez pas de file d'attente de lettres mortes avec une file d'attente FIFO (premier arrivé, premier sorti) si vous ne souhaitez pas modifier l'ordre exact des messages ou des opérations. Par exemple, n'utilisez pas de file d'attente de lettres mortes contenant des instructions dans une liste de décisions de montage (EDL) pour une suite de montage vidéo. Dans ce cas, changer l'ordre de montage modifie également le contexte des montages suivants.

Comment fonctionne la file d'attente de lettres mortes ?

Dans la plupart des cas, une file d'attente de lettres mortes (DLQ) fonctionne comme une file d'attente de messages normale. Elle stocke les messages erronés jusqu'à ce que vous les traitiez pour rechercher la cause de l'erreur.

Ensuite, nous parlons de la politique de redirection pour les DLQ et de la manière dont les messages entrent et quittent les DLQ.

Création d'une stratégie de redirection

Le logiciel déplace les messages vers une file d'attente de lettres mortes conformément à la stratégie de redirection. La stratégie de redirection inclut des règles qui déterminent à quel moment le logiciel doit déplacer les messages dans la file d'attente de lettres mortes. La stratégie de redirection régit la manière dont la file d'attente source et la file d'attente de lettres mortes interagissent entre elles, principalement en définissant le nombre maximal de tentatives. 

Par exemple, si votre développeur fixe le nombre maximal de tentatives à une (1), le système déplace toutes les livraisons infructueuses vers la DLQ après une seule tentative. Certains échecs de livraison peuvent être causés par une surcharge temporaire du réseau ou des problèmes logiciels. Cela envoie de nombreux messages non distribués vers la DLQ. Pour trouver le bon équilibre, les développeurs optimisent le nombre maximal de tentatives afin de s'assurer que le logiciel effectue suffisamment de tentatives avant de déplacer les messages vers la DLQ.

Déplacer des messages vers la file d'attente de lettres mortes

Les tentatives de livraison entre l'expéditeur et le destinataire peuvent échouer pour plusieurs raisons : 

  • Le destinataire ne reçoit pas le message car il n'existe pas. 
  • Le message contient des erreurs. 
  • Le message dépasse les limites de la file d'attente ou de longueur du message. Par exemple, certains destinataires ne peuvent pas traiter les messages au-delà d'une certaine taille. 
  • La durée de vie (TTL) du message a expiré. La TTL est une valeur qui indique la durée de validité d'un paquet de données spécifique sur le réseau. 

Retirer des messages de la file d'attente de lettres mortes

Lorsque des messages intègrent la file d'attente de lettres mortes, les développeurs examinent les messages erronés pour en déterminer les causes. Les messages contenus dans la DLQ peuvent contenir des informations précieuses permettant d'éviter que des problèmes similaires ne se reproduisent à l'avenir. Une fois que les développeurs ont analysé et résolu les problèmes, le système retire les messages de la DLQ et les envoie vers la file d'attente source. Cela permet à l'expéditeur de continuer à traiter les messages. 

Comment AWS peut-il répondre à vos exigences en matière de files d'attente de lettres mortes ?

Amazon Simple Queue Service (Amazon SQS) propose une approche évolutive d'échange de messages entre des systèmes distribués à grande échelle. Les développeurs utilisent Amazon SQS pour créer des applications Web fiables avec des files d'attente standard entièrement gérées et des files d'attente FIFO (premier arrivé, premier sorti).

Voici d'autres avantages d'Amazon SQS :

  • Amazon SQS permet aux systèmes de créer un nombre illimité de files d'attente de messages
  • Les développeurs peuvent transférer des messages par lots pour une meilleure rentabilité
  • Amazon SQS prend en charge le verrouillage des messages, empêchant ainsi plusieurs ordinateurs de traiter simultanément le même message

Commencez avec Amazon Web Services (AWS) en créant un compte AWS dès aujourd'hui.

Étapes suivantes sur AWS

Consultez d’autres ressources liées aux produits
Découvrez les offres gratuites d’intégration d’applications 
Créez un compte gratuit

Obtenez un accès instantané à l'offre gratuite AWS.

S'inscrire 
Commencez à créer sur la console

Démarrez la création dans la console de gestion AWS.

Se connecter