RabbitMQ - Solution Message-Oriented Middleware


Présentation

Rappel

AMQP est l'acronyme de Advanced Message Queuing Protocol. C'est un protocole pour les systèmes de messagerie orientés messages (MOM), créé en 2004 à l'initiative de la banque JPMorgan Chase, pour gérer la communication entre ses différents partenaires. Les spécifications d'AMQP ont été définies par un consortium international, composé de grandes entreprises comme Red Hat, Cisco Systems et Microsoft.



Principe

L'objectif d'AMQP est de permettre aux applications client, implémentant ce protocole, de communiquer avec un serveur de messagerie orienté messages implémentant lui aussi AMQP. Ce dernier résoud par ailleurs les problèmes d'interopérabilité, présents dans les solutions comme Tibco MQ et IBM MQ, en permettant de ne pas se soucier du système d'exploitation ou du langage de programmation des solutions communiquant ensemble.

Le fonctionnement de ce protocole consiste en trois principes :



Modèle

Le modèle d'AMQP représenté ci-dessous souligne les principes de ce protocole.

Dans ce modèle, les applications client sont représentées par les termes producteur et consommateur. Le rôle du producteur est d'envoyer un message au broker à destination du consommateur, on dit qu'il publie. Le rôle du consommateur est de recevoir un message à partir du broker, on dit qu'il consomme. Le rôle du broker est de réceptionner les messages envoyés et de les livrer aux destinataires spécifiés.
Le schéma ci-dessus illustre le fonctionnement du modèle AMQP, qui prend place dès l'envoi d'un message jusqu'à sa réception. Le modèle AMQP comporte trois types de composants : Ces composants ont tous des propriétés, mais uniquement les exchanges et queues sont nommés. La propriété de nom pour exchange et queue est utile dans chaque cas. Le premier permet au producteur, sachant le nom de l'exchange, de pouvoir lui publier un message. Le second permet au consommateur, sachant le nom d'une queue, de pouvoir en recevoir des messages. Le composant binding est dépendant des exchanges et queues.
Le message envoyé par le producteur contient les données du message, accompagnées de différentes propriétés : Lorsqu'un message est stocké dans une queue, en FIFO, il n'y a qu'un seul et unique consommateur qui reçoit ce message.