is an open source message broker software that originally implemented the Advanced Message Queuing Protocol (AMQP) and has since been extended with a plug-in architecture to support Streaming Text Oriented Messaging Protocol (STOMP), MQTT, and other protocols.
2. Plan
• Principe de la messagerie entre application
• Présentation :
• Le protocol AMQP 1.0
• Pourquoi un système de messagerie ?
• C’est quoi RabbitMQ ?
3. Présentation
• La messagerie fournit un mécanisme pour l'intégration de systèmes
faiblement couplés
• L'unité centrale de traitement dans un message est un message qui
contient généralement un corps et un
entête
4. Cas d’utilisation
• Les cas d’utilisation :
• Agrégation des fichier de journalisation LOG entre les systèmes ;
• La propagation d’évènements dans un système ;
• Affectation de taches aux nœud au sein d’un système distribué.
5. AMQP
• AMQP est un protocole binaire qui vise à standardiser la
communication middleware
• Advanced Message Queuing Protocol :
• Conçu en 2006 par JP Morgan.
• Standardisé : Norme internationale ISO / IEC 19464: 2014
• Sécurisé, Flexible, fiable, binaire, Multiplexé
• interopérable
6. AMQP
• Barclays Bank PLC
• Cisco Systems, Inc.
• Credit Suisse
• Deutsche Börse Systems
• Envoy Technologies Inc.
• Goldman Sachs
• iMatix Corporation
• IONA Technologies
• JPMorgan Chase Bank & Co.
• Microsoft Corporation
• Novell
• Rabbit Technologies, a joint venture of CohesiveFT and LShift
• Red Hat, Inc.
• Solace Systems, Inc.
• Tervela, Inc.
• TWIST Process Innovations
• WSO2, Inc.
• 29West Inc.
7. AMQP
• Le protocole AMQP définit :
• Exchanges : est le broker endpoints qui se charge de la reception du message
et le route vers la queue appropriée.
• Queues : stockent les messages destinés à un subscriber en attente qu’ils
soient récupérés
• Bindings : règles qui lient les exchanges et les queues.
9. Solutions existantes
• Les solutions de messagerie implémentent différents protocoles de
transfert de messages tels que AMQP, XMPP, MQTT et bien d'autres
• La variété des protocoles implique un verrouillage du fournisseur
lors de l'utilisation d'une solution de messagerie particulière
appelé un courtier de messagerie) « Broker »
11. RabbitMQ
• RabbitMQ est une implémentation du protocole AMQP
• Il est opensource
• Il est écrit en langage Erlang
• Il dispose d’une architecture « pluggable » et fournit une extension
pour d'autres protocoles tels que HTTP, STOMP et MQTT
13. RabbitMQ
• Chaque message est publié avec une routing key
• Toute liaison faite entre un exchange et une queue a un binding key
• Le routage des messages est déterminé en fonction de la
correspondance entre les routing keys et les binding keys
14. Models de messagerie dans
RabbitMQ
• Plusieurs modèles de messagerie sont mis en œuvre par les différents
types d’exchanges que fournit rabbitMQ :
default direct fanout
topic headers
15. Models de messagerie dans
RabbitMQ / default
AMQP
Default
Chat
Log
general
error
warning
Publisher
Publisher Subscriber
Subscriber
Subscriber
Exchange=‘’
Key=‘general’
Payload=‘ABC’
16. Models de messagerie dans
RabbitMQ / direct
AMQP
Default
Chat
Log
general
error
warning
Publisher
Publisher Subscriber
Subscriber
Subscriber
Exchange=‘chat’
Key=‘b_general’
Payload=‘ABC’
b_general
17. Models de messagerie dans
RabbitMQ / fanout
AMQP
Default
Chat
Log
general
error
warning
Publisher
Publisher Subscriber
Subscriber
Subscriber
Exchange=‘log’
Key=‘’
Payload=‘ABC’
18. Models de messagerie dans
RabbitMQ / topic
AMQP
Default
Chat
Log
general
error
Warning.serv
Publisher
Publisher Subscriber
Subscriber
Subscriber
Exchange=‘log’
Key=‘warning.#’
Payload=‘ABC’
Warning.cli
19. Models de messagerie dans
RabbitMQ / headers
• Un échange « headers » route les messages en fonction d'un
message personnalisé placé dans le header du message envoyé
20. RabbitMQ / Sécurité
• RabbitMQ utilise SASL pour l'authentification
• RabbitMQ utilise des listes de contrôle d'accès (ACL) pour
l'autorisation
• SSL / TLS peut être activée pour securiser les canaux de
communication AMQP.
21. Conclusion
• RabbitMQ est une solution de messagerie robuste qui peut être
utilisée dans divers scénarios en fonction des besoins de votre
application.
Notes de l'éditeur
Un échange par défaut a la chaîne vide comme nom et achemine les messages vers une file d'attente si la clé de routage du message correspond au nom de la file d'attente (aucune liaison ne doit être déclarée entre un échange par défaut et une file d'attente)
• Les échanges par défaut conviennent à un point à pointla communication entre les points d'extrémité
Un échange direct achemine les messages vers une file d'attente si la clé de routage du message correspond à la clé de liaison entre l'échange direct et la file d'attente
Les échanges directs sont adaptés à la communication point à point entre les points d'extrémité
Un fanout échange des messages (broadcasts) vers toutes les files d'attente qui lui sont liées (la clé de liaison n'est pas utilisée)
Les échanges de fanout sont adaptés pour publier des communications entre des points de terminaison
Un sujet échange des messages (multidiffusions) vers toutes les files d'attente qui ont une clé de liaison (peut être un motif) qui correspond à la clé de routage du message
• Les échanges d'en-tête conviennent au routage des messages vers différentes files d'attente en fonction de plusieurs attributs
• Les échanges d'en-tête conviennent au routage des messages vers différentes files d'attente en fonction de plusieurs attributs
• Les échanges d'en-tête conviennent au routage des messages vers différentes files d'attente en fonction de plusieurs attributs