FlowKit

Connecter RabbitMQ à n8n : découpler un pipeline IA avec des files d'attente

Publié le 15 août 2026 · 6 min de lecture

Un webhook n8n qui déclenche directement un appel à un modèle de langage a un défaut structurel : il couple le temps de réponse au client au temps de traitement de l'IA. Si l'appel LLM prend huit secondes et que dix requêtes arrivent en même temps, l'appelant attend, l'API du modèle est sollicitée en rafale, et le moindre pic de trafic devient un risque de timeout ou de rate limit. RabbitMQ règle ce problème autrement qu'en ajoutant des workers : il insère une file d'attente entre le producteur d'événements et le workflow n8n qui les traite, pour que les deux vitesses ne soient plus jamais couplées.

Le problème que RabbitMQ résout (et celui qu'il ne résout pas)

n8n dispose déjà d'un mode queue avec Redis : plusieurs workers se répartissent les exécutions d'un même workflow pour tenir la charge. C'est utile, mais ça ne change rien au fait que le webhook doit d'abord recevoir la requête, la faire entrer dans n8n, puis attendre qu'un worker soit disponible.

RabbitMQ intervient un cran plus tôt : au lieu que l'appelant frappe directement un webhook n8n, il publie un message dans une queue et reçoit sa confirmation immédiatement, indépendamment du temps que prendra le traitement réel. n8n consomme la queue à son propre rythme, via un node RabbitMQ Trigger. Les deux mécanismes sont complémentaires plutôt que concurrents : RabbitMQ absorbe les pics et découple les producteurs, le mode queue de n8n absorbe le débit de traitement une fois les messages entrés dans le système.

Connecter n8n à un broker RabbitMQ

n8n communique avec RabbitMQ en AMQP 0-9-1, le protocole natif du broker (port 5672 par défaut, 5671 en TLS). Pour un premier test en local ou sur un VPS self-hosted, un broker via Docker suffit :

docker run -d --name rabbitmq \
  -p 5672:5672 -p 15672:15672 \
  rabbitmq:3-management

Le port 15672 expose l'interface d'administration, pratique pour visualiser les queues et les messages en attente sans quitter le navigateur. Dans n8n, créez ensuite un credential RabbitMQ : hôte, port, vhost (/ par défaut), utilisateur et mot de passe. Les credentials sont chiffrés comme tous les autres — le même principe que pour sécuriser vos autres identifiants API s'applique ici.

Lire une queue avec RabbitMQ Trigger

Le node RabbitMQ Trigger démarre un workflow à chaque message publié sur une queue donnée. Son unique paramètre obligatoire est le nom de la queue ; les options méritent en revanche d'être comprises avant la mise en production :

  • JSON Parse Body convertit automatiquement le contenu du message en objet JSON exploitable dans le workflow, plutôt qu'en chaîne brute.
  • Parallel Message Processing Limit plafonne le nombre d'exécutions concurrentes déclenchées par la même queue — un garde-fou utile face à un appel LLM ou une API tierce avec un quota, sur le même principe que la gestion d'un rate limit d'API IA.
  • Binding permet de lier la queue à un exchange existant avec une routing key, plutôt que de publier directement dessus (voir plus bas).

Les quatre modes d'accusé de réception

Le comportement le plus déterminant du node se cache dans son option d'acquittement (« Delete From Queue When ») :

  1. Immediately — le message est retiré de la queue dès sa réception, avant même que le workflow ne s'exécute. À éviter dès que le traitement peut échouer : un message perdu ici ne sera jamais retraité.
  2. Execution Finishes (par défaut) — le message est retiré une fois le workflow terminé, qu'il ait réussi ou échoué.
  3. Execution Finishes Successfully — le message n'est retiré qu'en cas de succès réel. En cas d'erreur, RabbitMQ le garde en file et le redélivre, ce qui se combine naturellement avec un Error Workflow pour tracer les échecs sans perdre l'événement.
  4. Specified Later in Workflow — l'acquittement est déclenché explicitement plus loin, via un node RabbitMQ en opération « Delete From Queue », utile quand la logique de validation est complexe.

Choisir « Execution Finishes Successfully » sur un pipeline critique implique une conséquence directe : un message qui échoue de façon répétée sera redélivré indéfiniment, exactement comme un webhook rejoué. La même discipline d'idempotence s'applique : un identifiant de message stocké dans une table de suivi évite de traiter deux fois la même facture ou le même document.

Publier des messages : queue directe ou exchange

Le node RabbitMQ (non-trigger) publie des messages et propose deux modes. En mode Queue, le message va directement dans une file nommée — le cas le plus simple, adapté à un seul type de traitement. En mode Exchange, le message est adressé à un exchange RabbitMQ avec une routing key, et c'est le broker qui décide vers quelle(s) queue(s) le router selon le type d'exchange choisi :

  • Direct — livraison à la queue dont la routing key correspond exactement.
  • Topic — routage par motif (documents.pdf, documents.*), pratique pour dispatcher un même flux d'événements vers plusieurs workflows n8n spécialisés sans que le producteur ait à les connaître.
  • Fanout — diffusion à toutes les queues liées, indépendamment de la routing key.
  • Headers — routage basé sur des en-têtes personnalisés plutôt que sur la routing key.

Les options Durable (la queue survit à un redémarrage du broker) et Alternate Exchange (destination de repli pour un message non routable) sont celles à vérifier avant la mise en production — une queue non durable perd son contenu au premier redémarrage du conteneur RabbitMQ.

Cas d'usage : découpler l'ingestion d'un pipeline RAG

Prenons l'ingestion de documents d'un pipeline RAG comme celui du Pack Assistant RAG (119 €) : un utilisateur dépose dix PDF d'un coup dans un dossier surveillé. Sans file d'attente, dix exécutions du workflow d'embeddings démarrent en parallèle et saturent l'API OpenAI en quelques secondes. Avec RabbitMQ en amont : un premier workflow léger reçoit chaque fichier et publie un message par document sur un exchange topic (documents.pdf, documents.docx) ; un second workflow, déclenché par RabbitMQ Trigger avec un parallelMessages limité à deux ou trois, consomme la queue au rythme que l'API d'embeddings peut réellement encaisser. Le même schéma s'applique à la piste d'audit du Pack Conformité & Audit (149 €) : les événements de conformité sont publiés dès qu'ils surviennent, et journalisés à un rythme maîtrisé plutôt qu'en rafale.

RabbitMQ ou Kafka : ne pas se tromper d'outil

n8n propose des nodes natifs pour les deux brokers, et le choix mérite d'être posé avant d'installer quoi que ce soit. Une étude comparative de référence menée par Philippe Dobbelaere et Kyumars Sheykh Esmaili (Kafka versus RabbitMQ: A comparative study of two industry reference publish/subscribe implementations, ACM DEBS 2017 — voir sur Google Scholar) montre que RabbitMQ excelle pour des messages individuels à faible latence avec un routage riche, tandis que Kafka est taillé pour des flux massifs qu'il faut pouvoir rejouer depuis n'importe quel point dans le temps. Pour découpler des événements métier (un document déposé, une commande passée, une alerte à trier) devant un pipeline IA n8n, RabbitMQ reste le choix le plus direct ; Kafka ne se justifie que si le volume ou le besoin de relecture historique l'exige réellement.

En résumé

RabbitMQ n'ajoute pas de puissance de calcul à n8n : il change la forme du problème, en remplaçant un couplage direct producteur-traitement par une file que chaque partie consomme à son propre rythme. Le choix du mode d'accusé de réception — « Execution Finishes Successfully » pour tout traitement qui peut échouer — et un exchange de type topic pour router plusieurs flux vers des workflows spécialisés couvrent l'essentiel des besoins réels. Avant de le déployer en production, pensez à superviser l'instance n8n qui consomme la queue : une file qui grossit sans être vidée est le premier signal qu'un worker en aval est tombé.

FAQ

Questions fréquentes

Faut-il RabbitMQ si n8n tourne déjà en mode queue avec Redis ?

Ce sont deux niveaux différents. Le mode queue de n8n (Redis + workers) distribue les exécutions d'un même workflow entre plusieurs processus n8n. RabbitMQ, lui, découple des systèmes hétérogènes en amont : un webhook, un cron, une autre application peuvent publier un message sans attendre que n8n l'ait traité. Les deux se combinent bien : RabbitMQ absorbe le pic et la queue, n8n en mode queue absorbe le débit de traitement.

Le node RabbitMQ Trigger accuse-t-il réception automatiquement ?

Par défaut oui, sur "Execution Finishes" : le message est retiré de la queue quand le workflow se termine, même en erreur. Pour ne retirer le message qu'en cas de succès réel, il faut choisir explicitement "Execution Finishes Successfully" dans les options du node — sinon un message ayant échoué est perdu sans retraitement.

Comment router des messages différents vers des workflows n8n différents ?

En utilisant un exchange de type topic avec des routing keys structurées (par exemple documents.pdf, documents.image) : chaque node RabbitMQ Trigger se lie à l'exchange avec un motif de routing key différent, et RabbitMQ ne délivre à chaque workflow que les messages qui correspondent à son motif — sans que le producteur ait besoin de connaître les consommateurs.

Bundle FlowKit Complet

269 €