Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

RabbitMQ

Par Ange Jennyfer NGUENO FOKAM Publié le 31/10/2016 à 00:44:57 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Présentation

Historique

RabbitMQ a été développé en 2006 par Rabbit Technologies Ltd, fondée par l'association des entreprises Lshift, société anglaise de conseil, et Cohesive FT, société américaine de virtualisation et de cloud computing. Cette alliance a été crée dans le but de créer un serveur implémentant le protocole AMQP. AMQP un logiciel open-source, distribué sous la licence Mozilla Public License. Ce dernier est un protocol de message queueing, largement applicable pour les entreprises et signifie Advanced Message Queueing Protocol.

Depuis 2010, Rabbit Technologies Ltd a été rachetée par SpringSource, et plus précisément une division de la société VMware. Ce dernier a par ailleurs intégré RabbitMQ en tant que produit VMware, sous le nom de vFabric RabbitMQ. Hormis cette acquisition, RabbitMQ continue à distribuer son code de la même manière, soit en open-source. La dernière version proposée est la 3.6.5.

Solution

RabbitMQ est une solution de messagerie orientée messages, ou solution Message-Oriented Middleware (MOM). Un middleware est un logiciel tiers permettant de créer un réseau d'échange d'informations entre des applications. La technique d'échange d'informations utilisée par RabbitMQ est l'échange de messages.

Le terme MQ, Message Queuing, présent dans RabbitMQ souligne cette technique et par ailleurs la principale fonctionnalité du produit. Il représente la connexion d'applications par le biais de messages routés grâce à un broker. On peut comparer le broker à La Poste, c'est-à-dire qu'il reçoit un message d'une application et le délivre à une autre mais la seule différence c'est que vous avez plusieurs méthodes de diffusion du messages, en d'autre termes ce n'est pas qu'un système Destinateur -> Destinataire. Parmis les différentes méthodes de diffusion de messages nous avons :

  • Basique

    La chose la plus simple que fait RabbitMQ

    Ici on a un Destinateur, une Queue, un Destinataire

  • Work queue

    Distribue les tâches parmis les Workers

    Ici le broker a à faire a plusieurs destinataire mais un seul destinateur et une seule queue. Donc le broker ce charge de repartir les messages entres les différents destinataires.

  • Publish / Subscribe

    Envoie les messages à plusieurs consommateurs à la fois

    Le nombre de queue est équivalent au nombre de consommateurs. Les messages envoyés par le producteur sont donc décuplés en nombre de queue et envoyé en broacast.

  • Routing

    Reçoie les messages selectivement.

    Ici le broker fonctionne un peu comme un routeur et au lieu de décupler le message en fonctionne du nombre de queue et de les envoyer en broadcast. Le message est envoyé à la bonne queue en fonction du contenu du paquet.

  • Topics

    C'est pareil que le précédent mis à part que la clé pour le routage ne peut être arbitraire ça doit être une liste de mots séparés par un point.

  • RPC : Remote Procedure Call

    On a faire à une architecture "Client" -> "Serveur" de base.

    Le client contacte le serveur (une queue) et le serveur réponds au client en utilisant une autre queue.

Caratéristiques

Broker

Le broker proposer par RabbitMQ est dévéloppé en Erlang et intégre AMQP.

Erlang

Erlang est le langage choisit par RabbitMQ pour écrire son broker. C'est un langage fonctionnel open-source développé par Ericsson.

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. 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.

Installation

En fonction de l'OS :

  1. Windows

  2. Linux / Unix

    1. Debian / Ubuntu

      • echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list

      • (Optionnel) wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

      • sudo apt-get update

      • sudo apt-get install rabbitmq-server

    2. Fedora / RHEL

      rabbitmq-server est par défaut installer sur cette distribution de Linux. Mais la version installer est en général veille

      • Installer tout d'abord Erlang : yum install erlang

      • Ensuite, installer RabbitMQ Server : rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc, yum install rabbitmq-server-3.6.5-1.noarch.rpm

    3. Generic Unix

      • Installer une version récente d'Erlang

      • Télécharger rabbitmq-server-generic-unix-3.6.5.tar.xz.

    4. Solaris

      • Faire pareil que pour "Generic Unix"

      • Mais modifier la première ligne de chaque script (qui se lit normalement #! / Bin / sh) avec #! / Bin / xpg4 / bin / sh.

      • Les scripts shell RabbitMQ supposent l'existence de la "readlink" utilitaire pour résoudre les liens symboliques. Ceci peut être obtenu en installant le "coreutils" package Sunfreeware ou compiler GNU coreutils.

  3. Mac OS

    • brew install rabbitmq

Domaines d'applications et Extras de RabbitMQ

Domaines d'applications

  1. Réseaux

    Le réseaux est la base de l'utilisation de RabbitMQ car c'est utile pour gérer la distribution des paquets et autres. En d'autres termes c'est dans ce domaine qu'il y a le plus d'échange d'information entre les machines

  2. Dévelopemment

    • Mise en place d'un scheduler

    • Mise en place d'une messagerie instantanée

Extras

Les fonctionnalités supplémentaires de RabbitMQ :

  • Support TLS : Troubleshooting

  • Clustering

  • Haute disponibilité

  • Liste de contrôle de production

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels