RabbitMQ est un courtier de messages open source qui fait circuler des tâches entre applications de façon asynchrone. Fonctionnement, types d'échanges, usages concrets, limites et alternatives comme Kafka ou Amazon SQS.
RabbitMQ est un logiciel libre de courtier de messages (message broker) : il reçoit des messages envoyés par une application, les range dans des files d’attente et les distribue à d’autres applications qui les traitent à leur rythme. On l’utilise pour exécuter en arrière-plan les tâches lentes (envoi d’e-mails, génération de PDF, synchronisation avec un ERP), pour découpler les briques d’un logiciel et pour absorber les pics de charge sans ralentir le site.
On explique d’abord ce qu’est une file de messages, puis le fonctionnement de RabbitMQ (producteur, échange, file, consommateur), ses points forts et ses limites, les alternatives comme Kafka ou Amazon SQS, et comment l’essayer en quelques minutes. Les informations de version sont à jour en septembre 2026.
- Qu’est-ce qu’une file d’attente de messages ?
- Qu’est-ce que RabbitMQ exactement ?
- Comment fonctionne RabbitMQ ?
- Quels sont les types d’échanges ?
- À quoi sert RabbitMQ concrètement ?
- Quels sont ses avantages et ses limites ?
- RabbitMQ, Kafka, Amazon SQS ou IronMQ : lequel choisir ?
- Comment installer et tester RabbitMQ ?
- Dans quels cas vous n’en avez pas besoin ?
- Questions fréquentes
- Sources
Qu’est-ce qu’une file d’attente de messages ?

Une file d’attente de messages (message queue) est une zone tampon entre deux programmes. Le premier dépose un message (« génère la facture de la commande 1542 »), le second le récupère quand il est disponible et effectue le travail. Les deux programmes n’ont pas besoin d’être actifs en même temps ni d’aller à la même vitesse : c’est ce qu’on appelle une communication asynchrone.
Trois rôles reviennent toujours :
- Le producteur : l’application qui crée le message (votre site web, votre API, un script).
- Le courtier (broker) : le logiciel qui reçoit, stocke et distribue les messages. RabbitMQ joue ce rôle.
- Le consommateur : le programme (souvent appelé « worker ») qui lit les messages et exécute la tâche.
Prenons l’exemple d’un formulaire qui génère un PDF personnalisé. Sans file de messages, le serveur web fabrique le PDF pendant que l’internaute attend devant une page qui charge. Avec une file, le site dépose un message « générer le PDF » et répond tout de suite (« votre document arrive par e-mail »). Un worker traite le PDF en arrière-plan. Si les demandes s’accumulent, on ajoute des workers : la file se vide plus vite et le site reste rapide.
Qu’est-ce que RabbitMQ exactement ?

RabbitMQ est un courtier de messages open source, écrit en Erlang. Le code du serveur et de ses plugins principaux est publié sous licence Mozilla Public License 2.0. Le projet est aujourd’hui soutenu par Broadcom (division Tanzu), qui vend aussi un support commercial.
Où en est RabbitMQ en 2026 ? La série 4.3 est sortie le 23 avril 2026 (correctif 4.3.6 le 16 septembre 2026). La série 4.2, sortie en octobre 2025, est la version à support long côté commercial. La version 4.0 (septembre 2024) a marqué un tournant : AMQP 1.0 devient un protocole natif toujours activé, et la réplication historique des files « classiques » (mirroring) a été supprimée au profit des files quorum et des streams.
RabbitMQ parle plusieurs protocoles, ce qui lui permet de connecter des applications très différentes :
- AMQP 0-9-1 : le protocole historique de RabbitMQ, le plus utilisé par les bibliothèques clientes.
- AMQP 1.0 : norme ISO/IEC, protocole natif depuis la 4.0.
- MQTT 3.1, 3.1.1 et 5.0 : le protocole des objets connectés.
- STOMP via un plugin, et les WebSockets pour AMQP 1.0, MQTT et STOMP.
- RabbitMQ Streams : un protocole dédié aux flux à très haut débit.
- HTTP, via le plugin de gestion, pour le diagnostic et les faibles volumes.
Des bibliothèques clientes existent pour la plupart des langages (PHP, Python, Node.js, Java, .NET, Go, Ruby). Plusieurs frameworks courants savent l’utiliser directement : Symfony Messenger propose un transport AMQP, et Celery (Python) documente RabbitMQ comme courtier.
Comment fonctionne RabbitMQ ?
Reprenons notre formulaire qui génère un PDF. Voici le trajet d’un message dans RabbitMQ :
- L’internaute valide le formulaire sur le site.
- L’application web (le producteur) publie un message « générer le PDF » qui contient les données utiles : nom, adresse e-mail, identifiant de la demande.
- Le message n’arrive pas directement dans une file : il est envoyé à un échange (exchange). L’échange applique des règles de routage (les bindings) et dépose le message dans la ou les bonnes files.
- Un consommateur (le worker PDF) récupère le message dans la file, génère le document et l’envoie par e-mail.
- Le worker envoie un accusé de réception (ack) : RabbitMQ peut alors supprimer le message. Si le worker plante avant, le message est redistribué à un autre worker.
Deux mécanismes rendent ce trajet fiable. Côté consommateur, les accusés de réception explicites garantissent qu’un message n’est retiré qu’une fois traité. Côté producteur, les publisher confirms permettent à l’application de savoir que le courtier a bien pris le message en charge. Les messages qui échouent plusieurs fois peuvent être envoyés dans une file à part (dead letter) pour analyse, au lieu de bloquer les autres.
Files classiques, files quorum et streams
| Type | Principe | Quand l’utiliser |
|---|---|---|
| File classique | File non répliquée, sur un seul nœud | Files temporaires, données qu’on peut perdre sans gravité |
| File quorum | File durable, répliquée sur plusieurs nœuds grâce à l’algorithme de consensus Raft | Messages importants (commandes, paiements) où la perte n’est pas acceptable |
| Stream | Journal en ajout seul : les messages ne sont pas supprimés à la lecture et peuvent être relus | Gros volumes, plusieurs lecteurs, besoin de rejouer l’historique |
Quels sont les types d’échanges ?
Le routage est la grande force de RabbitMQ. Le protocole AMQP 0-9-1 définit quatre types d’échanges :
- Direct : le message va dans la file dont la clé correspond exactement à sa clé de routage. Exemple : la clé « pdf » envoie vers la file des PDF.
- Fanout : le message est copié dans toutes les files reliées, sans tenir compte de la clé. Exemple : une nouvelle commande prévient à la fois la facturation, la logistique et l’outil d’e-mailing.
- Topic : le routage se fait par motif. Exemple : « commande.*.france » capte « commande.creee.france » et « commande.annulee.france ».
- Headers : le routage se base sur les en-têtes du message plutôt que sur la clé.
Il existe aussi un échange par défaut, sans nom : chaque file y est automatiquement reliée avec son propre nom comme clé. C’est ce qui permet, dans les tutoriels, d’envoyer un message « directement » dans une file.
À quoi sert RabbitMQ concrètement ?
Pour une PME, les usages les plus fréquents sont très terre à terre :
- Tâches lentes en arrière-plan : envoi d’e-mails transactionnels, génération de PDF ou de factures, redimensionnement d’images, exports.
- Synchronisation entre outils : une commande passée sur la boutique en ligne est transmise à l’ERP, au CRM et au logisticien, même si l’un d’eux est momentanément indisponible. Le message attend dans la file au lieu d’être perdu.
- Absorption des pics : lors d’une opération commerciale, les commandes s’empilent dans la file et sont traitées au rythme que le système peut tenir.
- Communication entre microservices : chaque service publie des événements (« commande créée », « paiement accepté ») que les autres écoutent. Sur ce sujet, lire notre article sur l’architecture de microservices.
- Objets connectés : grâce à MQTT, des capteurs peuvent remonter leurs mesures vers RabbitMQ, qui les distribue ensuite aux applications métier.
Ce type d’architecture se conçoit en même temps que les échanges entre vos logiciels. Si vous avez plusieurs outils à faire dialoguer, c’est le cœur de notre travail d’intégration et d’automatisation. Pour comprendre la brique qui expose les données, voyez aussi ce qu’est une API.
Quels sont ses avantages et ses limites ?
Les points forts
- Fiabilité : accusés de réception, confirmations de publication, files quorum répliquées et files de rejet limitent les pertes de messages.
- Routage souple : les quatre types d’échanges couvrent la plupart des scénarios sans code supplémentaire.
- Polyvalence : plusieurs protocoles et des clients dans presque tous les langages.
- Interface de gestion : le plugin de gestion affiche, dans le navigateur (port 15672 par défaut), les files, les échanges, les connexions et les débits.
- Libre et auto-hébergeable : pas de licence à payer pour la version open source, et des offres gérées existent si vous ne voulez pas l’administrer (Amazon MQ propose par exemple RabbitMQ).
Les limites
- Une brique de plus à exploiter : il faut l’installer, le surveiller, le mettre à jour et le sauvegarder. Les séries de versions ont une durée de support communautaire courte, ce qui impose des montées de version régulières.
- Une courbe d’apprentissage : échanges, bindings, accusés, files quorum, gestion des erreurs, ces notions déroutent au début.
- Des files qui ne sont pas des bases de données : les files quorum sont déconseillées pour des arriérés très longs (plusieurs millions de messages). Pour conserver et relire un historique, il faut passer aux streams ou à un autre outil.
- Un débogage parfois délicat : un message qui disparaît ou tourne en boucle se diagnostique mieux quand la journalisation et les files de rejet ont été prévues dès le départ.
RabbitMQ, Kafka, Amazon SQS ou IronMQ : lequel choisir ?
| Outil | Nature | Point fort | À privilégier si |
|---|---|---|---|
| RabbitMQ | Courtier de messages open source | Routage fin, plusieurs protocoles | Vous distribuez des tâches entre applications et voulez garder la main sur l’hébergement |
| Apache Kafka | Plateforme de streaming d’événements | Stockage durable des événements, conservés selon une durée configurable même après lecture | Vous traitez de très gros flux d’événements et devez les rejouer |
| Amazon SQS | File d’attente gérée par AWS | Rien à administrer, files standard ou FIFO | Votre application tourne déjà sur AWS |
| IronMQ | File d’attente en service cloud (Iron.io) | Service hébergé, files push et pull | Vous cherchez une file hébergée sans lien avec un grand cloud |
La différence de fond entre RabbitMQ et Kafka : RabbitMQ est pensé pour distribuer du travail (un message est traité puis retiré), Kafka pour conserver un journal d’événements que plusieurs systèmes relisent. Les streams de RabbitMQ rapprochent un peu les deux mondes. Pour les applications déjà hébergées chez Amazon, notre article sur les services cloud AWS présente l’écosystème.
Comment installer et tester RabbitMQ ?
La façon la plus rapide est Docker. La documentation officielle propose cette commande, qui lance RabbitMQ 4 avec son interface de gestion :
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4-management
- Le port 5672 reçoit les connexions AMQP de vos applications.
- Ouvrez http://localhost:15672 dans le navigateur pour accéder à l’interface de gestion.
- Connectez-vous avec l’utilisateur par défaut guest / guest. Cet utilisateur ne peut se connecter qu’en local : en production, créez un utilisateur dédié avec un mot de passe fort et supprimez guest.
- Suivez ensuite les tutoriels officiels (« Hello World », « Work queues ») dans votre langage pour publier et consommer vos premiers messages.
En production, prévoyez au minimum : des utilisateurs et des vhosts séparés par application, des files quorum pour les messages importants, une supervision (taille des files, consommateurs connectés, mémoire et disque) et un calendrier de mises à jour.
Dans quels cas vous n’en avez pas besoin ?
RabbitMQ n’est pas un passage obligé. Un site vitrine ou une boutique WooCommerce classique n’en a pas besoin. Pour quelques tâches différées, la file intégrée à votre framework (base de données, Redis) ou une tâche planifiée suffit souvent et évite une brique à maintenir. RabbitMQ devient pertinent quand plusieurs applications doivent échanger de façon fiable, quand les volumes augmentent ou quand une panne d’un outil ne doit pas bloquer les autres.
Si vous développez un logiciel métier qui doit dialoguer avec plusieurs systèmes, on peut vous aider à choisir l’architecture la plus simple qui tienne la charge, dans le cadre de nos applications web sur mesure.
Questions fréquentes
RabbitMQ est-il gratuit ?
Oui, la version open source est gratuite et publiée sous licence MPL 2.0. Broadcom vend un support commercial, avec des durées de maintenance plus longues que le support communautaire.
Dans quel langage RabbitMQ est-il écrit ?
En Erlang, un langage conçu pour les systèmes concurrents et tolérants aux pannes. Vos applications, elles, peuvent être écrites dans n’importe quel langage disposant d’une bibliothèque cliente.
Quelle différence entre RabbitMQ et Kafka ?
RabbitMQ distribue des messages à traiter, qui sont retirés une fois acquittés. Kafka stocke des flux d’événements pendant une durée définie, et plusieurs systèmes peuvent les relire. Pour répartir des tâches, RabbitMQ est souvent plus simple ; pour de l’analyse de flux massifs, Kafka est plus adapté.
Qu’est-ce qu’AMQP ?
AMQP (Advanced Message Queuing Protocol) est un protocole de messagerie. RabbitMQ a été créé autour de la version 0-9-1 et prend en charge nativement AMQP 1.0, une norme ISO/IEC, depuis sa version 4.0.
Peut-on perdre des messages avec RabbitMQ ?
C’est possible si l’application est mal configurée. Pour l’éviter : files quorum durables, confirmations de publication côté producteur, accusés de réception manuels côté consommateur et file de rejet pour les messages en échec.
Sources
- RabbitMQ : versions prises en charge et dates de sortie
- RabbitMQ 4.0.1 : notes de version (AMQP 1.0 natif, fin du mirroring)
- RabbitMQ : licence (MPL 2.0)
- RabbitMQ : protocoles pris en charge
- RabbitMQ : concepts AMQP 0-9-1 (échanges, accusés de réception)
- RabbitMQ : files quorum
- RabbitMQ : streams
- RabbitMQ : installation et image Docker
- RabbitMQ : plugin de gestion
- RabbitMQ : contrôle d’accès et utilisateur guest
- Symfony : composant Messenger et transport AMQP
- Celery : courtiers pris en charge
- Apache Kafka : introduction
- AWS : présentation d’Amazon SQS et d’Amazon MQ
- Iron.io : IronMQ





