RabbitMQ
DevOps 🟡 MidDéfinition
Message broker AMQP pour la communication asynchrone entre services. Supporte les queues, exchanges, routing et dead letter queues.
Analogie
Un bureau de poste : il reçoit les lettres (messages), les trie et les distribue dans les bonnes boîtes aux lettres (queues).
Exemple de code
// Publisher
channel.publish('orders', 'order.created',
Buffer.from(JSON.stringify(order)));
// Consumer
channel.consume('order-processing', (msg) => {
const order = JSON.parse(msg.content);
processOrder(order);
channel.ack(msg);
});
Cas d'usage
Découpler les services pour absorber les pics de charge sans perdre de messages.
Anti-pattern
Termes liés
En entretien
Explique-moi le rôle de RabbitMQ dans une architecture.
C'est un message broker AMQP pour la communication asynchrone entre services, qui supporte queues, exchanges, routing et dead letter queues. C'est comme un bureau de poste : il reçoit les lettres, les trie et les distribue dans les bonnes boîtes aux lettres.
Pourquoi utiliser RabbitMQ plutôt qu'un appel synchrone entre services ?
Pour découpler les services et absorber les pics de charge sans perdre de messages. Le publisher envoie sur un exchange comme channel.publish('orders', 'order.created', ...) et le consumer traite le message puis fait channel.ack(msg).
Quelle erreur peut saturer la mémoire d'un consumer RabbitMQ ?
Ne pas acquitter (ack) les messages : ils restent alors en queue et finissent par saturer la mémoire du broker. Il faut toujours appeler channel.ack(msg) une fois le traitement terminé.
Fiche mise à jour le 2026-09-27