RabbitMQ

DevOps 🟡 Mid

Dé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

Ne pas ack les messages : ils restent en queue et saturent la mémoire.
#devops#messaging#interview

En entretien

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

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

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

← → au clavier pour passer d'une fiche à l'autre