Qu'est-ce que le protocole avancĂ© de file d'attente de messages (AMQP) ?

27 mars 2024

Advanced Message Queuing Protocol (AMQP) est un protocole de couche application standard ouvert pour les applications orientées messages. middleware, en mettant l'accent sur la mise en file d'attente des messages, le routage (point à point et publication et abonnement), la fiabilité et la sécurité.

Contrairement aux systèmes de messagerie propriétaires, AMQP est un protocole ouvert et standardisé qui permet l'interopérabilité entre les systèmes et les applications. Il permet aux applications de communiquer et de s'envoyer des messages de manière fiable et évolutive, quelle que soit leur plateforme, leur architecture ou leur langage sous-jacent. Cette capacité en fait un outil essentiel pour créer des systèmes distribués complexes ou intégrer des environnements hétérogènes.

AMQP fonctionne sur une architecture basée sur un courtier, dans laquelle le courtier de messagerie agit comme un intermédiaire qui reçoit les messages des producteurs (envoi applications) et achemine ces messages vers les consommateurs appropriés (applications réceptrices). Ce modèle découple le producteur et le consommateur, leur permettant de fonctionner de manière indépendante.

Le protocole définit un ensemble de composants tels que les files d'attente de messages, les échanges et les liaisons qui facilitent le processus. flexroutage et livraison possibles des messages. De plus, AMQP spécifie à la fois le comportement du courtier de messagerie et le protocole de messagerie lui-même, garantissant une livraison fiable des messages grâce à des fonctionnalités telles que l'accusé de réception des messages, les files d'attente durables et la persistance des messages.

Une brève histoire de l’AMQP

AMQP est né du besoin d'un protocole standardisé, ouvert et interopérable pour les middlewares de messagerie. Son développement a commencé en 2003 lorsque John O'Hara de JPMorgan Chase à Londres a reconnu les limites et les coûts liés à l'utilisation de systèmes de messagerie propriétaires pour l'intégration d'applications. L'objectif était de créer un protocole pour faciliter la communication orientée message sur différentes plates-formes et technologies, réduisant ainsi la dépendance à l'égard de fournisseurs spécifiques et de systèmes propriétaires. La première version officielle d'AMQP, AMQP 0-9-1, a été publiée en 2006.

La sortie d'AMQP 1.0 en octobre 2011 a marqué une étape importante. AMQP 1.0 a introduit des changements majeurs, rendant le protocole plus flexible et interopérable en définissant un protocole binaire au niveau du fil indépendant du langage qui peut être implémenté sur n'importe quelle plate-forme. Cette version de l'AMQP a reçu un large soutien de l'industrie et a été ratifiée en tant que norme internationale par l'Organisation internationale de normalisation (ISO) et la Commission électrotechnique internationale (CEI) en 2014 sous le nom d'ISO/CEI 19464.

Depuis lors, l'AMQP a été adopté à l'échelle mondiale pour diverses applications, allant des services financiers aux IoT (Internet des objets) ainsi que cloud informatique.

Comment fonctionne l'AMQP ?

AMQP (Advanced Message Queuing Protocol) fonctionne à travers un cadre méticuleusement conçu qui orchestre le flux de messages entre producteurs et consommateurs de manière fiable, sécurisée et efficace.

À la base, le protocole utilise une architecture basée sur un courtier qui sert d'intermédiaire, gérant les chemins de communication au sein du système de messagerie. Les producteurs envoient des messages au courtier, précisant non seulement le contenu mais aussi les éléments critiques. métadonnées, tels que les clés de routage et les priorités des messages. Ce courtier assume alors la responsabilité de traiter ces messages, en déterminant leurs destinations appropriées en fonction de la logique de routage établie.

Le routage des messages au sein d'AMQP est facilité par les échanges, qui classent les messages et les dirigent vers les files d'attente appropriées en fonction de règles prédéfinies et du type d'échange utilisé. Cette configuration permet une variété de modèles de messagerie, de la simple messagerie point à point aux modèles de publication-abonnement plus complexes. Les files d'attente stockent temporairement les messages, garantissant qu'ils sont conservés en toute sécurité jusqu'à ce qu'un consommateur soit prêt à les traiter. Dès réception d'un message, les consommateurs peuvent accuser réception de son traitement, signalant au courtier de supprimer le message de la file d'attente, maintenant ainsi l'intégrité et l'ordre de la livraison du message.

Cette interaction sophistiquée entre les composants d'AMQP garantit que les messages sont non seulement transmis efficacement, mais également avec un haut degré de fiabilité et de sécurité. Le protocole prend en charge des fonctionnalités avancées telles que l'accusé de réception des messages, les transactions et la messagerie durable, qui sont essentielles pour les applications nécessitant une livraison garantie des messages et la capacité de récupération après une panne du système. De plus, les mécanismes de sécurité de l'AMQP, notamment SASL pour authentification et TLS pour chiffrement des données en transit.

Composants AMQP

AMQP facilite la messagerie complexe grâce Ă  un ensemble de composants de base qui interagissent de manière structurĂ©e. Ces composants sont fondamentaux pour l'architecture AMQP, lui permettant de prendre en charge une grande variĂ©tĂ© de modèles de messagerie. Voici une liste et une explication de ces composants clĂ©s :

  • Courtier. Le courtier agit comme intermĂ©diaire entre les producteurs de messages (expĂ©diteurs) et les consommateurs (destinataires). Il est chargĂ© de recevoir les messages des producteurs, de les acheminer de manière appropriĂ©e et de les transmettre aux consommateurs visĂ©s. Le courtier garantit que les messages sont stockĂ©s, gĂ©rĂ©s et transmis efficacement, offrant ainsi fiabilitĂ© et Ă©volutivitĂ© au système de messagerie.
  • Producteur. Le producteur, Ă©galement appelĂ© Ă©diteur, est une application ou un service qui envoie des messages. Les producteurs crĂ©ent des messages et les envoient Ă  un Ă©change au sein du courtier, souvent sans connaĂ®tre les consommateurs spĂ©cifiques qui recevront les messages. Cela dĂ©couple les parties d'envoi et de rĂ©ception du système, amĂ©liorant ainsi flexabilitĂ© et Ă©volutivitĂ©.
  • Consommateur. Un consommateur est une application ou un service qui reçoit des messages. Les consommateurs s'abonnent Ă  une file d'attente au sein du courtier et traitent les messages dès leur arrivĂ©e. Les consommateurs peuvent accuser rĂ©ception des messages une fois traitĂ©s, ce qui informe le courtier que le message peut ĂŞtre supprimĂ© en toute sĂ©curitĂ© de la file d'attente.
  • Échange. Les Ă©changes sont des entitĂ©s AMQP oĂą les producteurs envoient des messages. Un Ă©change reçoit et achemine les messages vers une ou plusieurs files d'attente en fonction de la clĂ© de routage du message, du type d'Ă©change et des liaisons. Les Ă©changes dissocient les producteurs des files d'attente, permettant une logique de routage plus complexe. Il existe plusieurs types d'Ă©changes, notamment :
    • Échange direct. Achemine les messages vers les files d’attente en fonction d’une clĂ© de routage correspondante.
    • Échange de fanouts. Diffuse les messages Ă  toutes les files d’attente liĂ©es sans tenir compte des clĂ©s de routage.
    • Échange de sujets. Achemine les messages vers les files d'attente en fonction des correspondances gĂ©nĂ©riques entre la clĂ© de routage et le modèle de routage spĂ©cifiĂ© dans la liaison.
    • Échange d'en-tĂŞtes. Achemine les messages en fonction des valeurs d'en-tĂŞte correspondantes plutĂ´t que des clĂ©s de routage.
  • File d'attente. Une file d'attente est un tampon qui stocke les messages jusqu'Ă  ce qu'ils puissent ĂŞtre traitĂ©s en toute sĂ©curitĂ© par un consommateur. Les files d'attente garantissent que les messages sont transmis aux consommateurs dans l'ordre du premier arrivĂ©, premier servi, bien que des prioritĂ©s puissent ĂŞtre dĂ©finies. Les consommateurs s'abonnent aux files d'attente pour recevoir des messages.
  • Obligatoire. Les liaisons sont des règles qui relient les files d'attente aux Ă©changes. Une liaison peut inclure une clĂ© ou un modèle de routage qui dicte la manière dont les messages doivent ĂŞtre acheminĂ©s de l'Ă©change vers la file d'attente. Les liaisons dĂ©terminent la relation entre les Ă©changes et les files d'attente, contrĂ´lant la manière dont les messages sont filtrĂ©s et acheminĂ©s au sein du courtier.
  • ClĂ© de routage. Une clĂ© de routage est une Ă©tiquette ou un identifiant que les producteurs attachent aux messages lorsqu'ils sont envoyĂ©s Ă  un Ă©change. La valeur de la clĂ© de routage est utilisĂ©e par l'Ă©change, conjointement avec les configurations de liaison, pour dĂ©terminer quelles files d'attente doivent recevoir le message.
  • Message. Le message est la donnĂ©e transportĂ©e entre le producteur et le consommateur. Il se compose d'une charge utile (les donnĂ©es rĂ©elles Ă  transmettre) et d'en-tĂŞtes ou de propriĂ©tĂ©s (mĂ©tadonnĂ©es sur le message, telles que son type, sa prioritĂ© et son mode de livraison).
  • Canal. Un canal est une connexion virtuelle au sein d’une connexion rĂ©seau physique. Les canaux aident Ă  multiplexer la connexion rĂ©seau entre le client AMQP (producteur/consommateur) et le courtier pour une communication plus efficace.
  • HĂ´te virtuel (vHost). Un hĂ´te virtuel permet de sĂ©parer les applications Ă  l'aide du mĂŞme courtier AMQP. Chaque hĂ´te virtuel peut disposer de son propre ensemble indĂ©pendant d'Ă©changes, de files d'attente et de liaisons.

Cas d'utilisation de l'AMQP

AMQP est un protocole de messagerie polyvalent qui prend en charge un large Ă©ventail de cas d'utilisation dans divers secteurs et applications. Son ensemble de fonctionnalitĂ©s robustes, notamment la mise en file d'attente des messages, le routage, la fiabilitĂ© et la sĂ©curitĂ©, le rend bien adaptĂ© aux systèmes complexes, distribuĂ©s et Ă©volutifs. Voici quelques cas d’utilisation clĂ©s d’AMQP :

  • IntĂ©gration d'applications d'entreprise. AMQP permet aux applications, systèmes et bases de donnĂ©es communiquer et Ă©changer des donnĂ©es de manière fiable et sĂ©curisĂ©e. Ceci est particulièrement utile dans les environnements hĂ©tĂ©rogènes oĂą les applications sont construites sur diffĂ©rentes plates-formes et technologies qui doivent fonctionner ensemble de manière transparente.
  • Systèmes dĂ©couplĂ©s. In architectures de microservices ou lors de la mise en Ĺ“uvre d'architectures orientĂ©es services (SOA), AMQP permet aux services de communiquer sans ĂŞtre Ă©troitement couplĂ©s les uns aux autres. Ce dĂ©couplage amĂ©liore l'Ă©volutivitĂ© et la rĂ©silience du système, car les services peuvent ĂŞtre dĂ©veloppĂ©s, dĂ©ployĂ©s et mis Ă  l'Ă©chelle indĂ©pendamment.
  • Traitement des donnĂ©es en temps rĂ©el. AMQP est utilisĂ© dans des scĂ©narios nĂ©cessitant donnĂ©es en temps rĂ©el Ă  grande vitesse. traitement, tel que l'analyse en continu, oĂą les donnĂ©es doivent ĂŞtre collectĂ©es, traitĂ©es et analysĂ©es immĂ©diatement. Le protocole garantit la livraison fiable des messages, mĂŞme en cas de pannes de rĂ©seau ou de retards de traitement.
  • L'Ă©quilibrage de charge. AMQP peut rĂ©partir les tâches ou les charges de travail entre plusieurs processus ou services de travail, aidant ainsi Ă  Ă©quilibrer la charge et amĂ©liorer l’efficacitĂ© globale et la rĂ©activitĂ© du système. Cette fonctionnalitĂ© est particulièrement utile dans cloud environnements informatiques et informatiques distribuĂ©s avec des charges de travail imprĂ©visibles.
  • Communication asynchrone. AMQP prend en charge les modèles de communication asynchrones, permettant aux applications d'envoyer et de recevoir des messages sans bloquer les opĂ©rations. Ce type de communication est crucial pour les applications qui nĂ©cessitent un dĂ©bit Ă©levĂ© et une faible latence, car il leur permet de rester rĂ©actifs en attendant les messages.
  • Internet des objets (IoT). Dans les applications IoT, AMQP est utilisĂ© pour collecter des donnĂ©es provenant de divers capteurs et appareils et les transmettre aux systèmes de traitement ou cloud prestations de service. Sa capacitĂ© Ă  fonctionner sur des rĂ©seaux contraints et sa messagerie sĂ©curisĂ©e et fiable en font un excellent choix pour les scĂ©narios IoT.
  • Services financiers. AMQP est utilisĂ© dans le secteur financier pour le traitement des transactions, les systèmes de trading en temps rĂ©el et le traitement des paiements. Sa fiabilitĂ© et sa prise en charge de la messagerie transactionnelle garantissent l'intĂ©gritĂ© et la cohĂ©rence des transactions financières.
  • Notifications et alertes. AMQP peut ĂŞtre utilisĂ© pour mettre en Ĺ“uvre des systèmes de notification, dans lesquels des alertes, des notifications ou des e-mails sont envoyĂ©s aux utilisateurs ou aux systèmes en rĂ©ponse Ă  des Ă©vĂ©nements ou Ă  des conditions spĂ©cifiques. Sa messagerie fiable garantit que les notifications sont dĂ©livrĂ©es mĂŞme si le destinataire est temporairement indisponible.
  • Soins de santĂ©. Dans le domaine de la santĂ©, AMQP permet une communication sĂ©curisĂ©e et fiable entre diffĂ©rents systèmes, tels que les dossiers des patients, la facturation et les Ă©quipements de diagnostic. Il garantit que les donnĂ©es sensibles sont transmises et traitĂ©es en toute sĂ©curitĂ© dans le respect de la rĂ©glementation.

AMQP contre MQTT

AMQP et MQTT (Message Queuing Telemetry Transport) sont tous deux des protocoles conçus pour les middlewares orientés messages, mais ils répondent à des objectifs différents et sont optimisés pour différents cas d'utilisation.

AMQP est un protocole plus riche en fonctionnalités, offrant un large éventail de fonctionnalités de messagerie, notamment la mise en file d'attente des messages, le routage, la gestion des transactions et la sécurité. Son modèle est intrinsèquement plus complexe et flexible, offrant une robustesse pour les systèmes qui nécessitent un contrôle précis sur les comportements de messagerie et les intégrations sur diverses plates-formes.

D'un autre côté, MQTT est conçu pour être simple et léger. Ce protocole suit un modèle de publication-abonnement, excellant dans les scénarios nécessitant un minimum de paquets de données et une distribution efficace des messages à plusieurs consommateurs. MQTT se caractérise par sa faible consommation d'énergie et sa facilité de mise en œuvre sur des appareils dotés de capacités de traitement limitées, ce qui le rend idéal pour la messagerie en temps réel dans les écosystèmes IoT.

Voici un aperçu de ces comparaisons :

Point de comparaisonAMQPMQTT
Objectif de conceptionConçu pour les modèles de messagerie complexes et l'intégration d'entreprise.Conçu pour la messagerie légère, principalement dans les scénarios IoT.
Frais généraux de protocolePlus élevé en raison d’un ensemble de fonctionnalités plus complet.Inférieur, optimisé pour une utilisation minimale de la bande passante.
Modèle de messageriePrend en charge les modèles point à point et publication-abonnement, ainsi que le routage avancé, les transactions et la mise en file d'attente des messages.Utilise principalement un modèle de publication-abonnement, en mettant moins l'accent sur le routage des messages.
QualitĂ© de service (QoS)Fournit diffĂ©rents niveaux de garanties de livraison des messages, notamment la livraison au plus une fois, au moins une fois et exactement une fois.Offre trois niveaux de QoS : 0 (au plus une fois), 1 (au moins une fois) et 2 (exactement une fois).
Cas d'usageIdéal pour l'intégration d'applications d'entreprise, les processus métier complexes et les situations nécessitant une livraison fiable des messages et une prise en charge des transactions.Idéal pour connecter des appareils IoT, en particulier dans des environnements avec une bande passante et une puissance limitées.
Flexibilité et complexitéPlus complexe en raison d'un large éventail de fonctionnalités, nécessitant plus de connaissances pour une mise en œuvre efficace.Plus simple et plus direct, facilitant la mise en œuvre dans des environnements contraints.
SécuritéFournit des fonctionnalités de sécurité complètes, notamment l’authentification et le cryptage.Prend en charge les mécanismes de sécurité de base mais s'appuie souvent sur la sécurité du réseau sous-jacente.
InteropérabilitéConçu pour permettre l'interopérabilité entre différents systèmes et fournisseurs, ce qui le rend adapté aux environnements d'entreprise dotés de technologies diverses.Axé sur l'interopérabilité dans le contexte des appareils et des plates-formes IoT.

Anastasie
Spasojevic
Anastazija est une rédactrice de contenu expérimentée avec des connaissances et une passion pour cloud l'informatique, les technologies de l'information et la sécurité en ligne. À phoenixNAP, elle se concentre sur la réponse à des questions brûlantes concernant la garantie de la robustesse et de la sécurité des données pour tous les acteurs du paysage numérique.