RabbitMQ - Solution Message-Oriented Middleware


Caractéristiques

Broker

Le broker proposé par RabbitMQ comporte deux caractéristiques importantes :

Erlang

Erlang est le langage choisit par RabbitMQ pour écrire son broker. C'est un langage fonctionnel open-source développé par Ericsson, qui l'utilise dans plusieurs de ses produits liés aux réseaux de télécommunication. Les principales caractéristiques de ce langage sont l'évaluation stricte, l'affectation unique et le typage dynamique fort.

Les motivations de l'utilisation d'Erlang sont le support d'applications distribuées et la tolérance aux pannes. Le but est de pouvoir mettre en place facilement et rapidement un cluster et d'assurer une haute disponibilité des services. C'est le framework OTP (Open Telecom Platform), regroupant de nombreuses librairies Erlang, qui propose en grande majorité ces fonctionnalités. De plus, Erlang est compatible avec le protocole AMQP.

AMQP

AMQP (Advanced Message Queuing Protocol) est un protocole ouvert de messagerie utilisé pour définir le transport de messages entre plusieurs applications. Il est similaire aux protocoles HTTP et TCP car c'est un protocole wire-level, à la différence qu'il permet un transport asynchrone.

RabbitMQ a choisit d'implémenter AMQP pour plusieurs raisons. La première est que ce protocole est décrit comme un standard pour les middleware, contrairement à JMS qui définit une API. Un consortium international, incluant de grandes entreprises comme Red Hat, Cisco Systems et Microsoft a écrit ce standard AMQP (Spécifications AMQP). La seconde est l'interopérabilité de ce protocole, qui permet à n'importe quelle application implémentant AMQP de communiquer avec un broker AMQP lui aussi.

AMQP n'est pas le seul protocole utilisé par RabbitMQ. L'image ci-dessous représente l'ensemble des protocoles, langages et API implémentés et/ou supportés par RabbitMQ.



API client

Des API client sont fournies par RabbitMQ afin de permettre aux applications d'utiliser le broker pour communiquer avec d'autres applications. Elles implémentent chacune le protocole AMQP afin d'intéragir avec n'importe quel broker. L'avantage d'AMQP est l'interopérabilité avec un grand nombre de langage de programmation.

En effet, l'image du paragraphe précédent indique tous les langages compatibles avec le protocole : Java, .Net, Perl et bien d'autres. RabbitMQ fournit des API pour l'ensemble des langages compatibles, elles sont documentées et téléchargeables sur le site de RabbitMQ. Il est possible de développer sa propre API, mais à condition d'implémenter le protocole AMQP afin d'être compatible avec un broker AMQP.