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) et 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 protocoles d'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 comparaison | AMQP | MQTT |
Objectif de conception | Conç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 protocole | Plus é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 messagerie | Prend 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'usage | Idé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. |