Projet open source
taskforcesh/bullmq avatar
taskforcesh/bullmq

BullMQ : une file d'attente distribuée basée sur Redis

BullMQ - Message Queue et traitement par lots pour NodeJS, Python, Elixir, Rust et PHP basés sur Redis.

9 403 étoiles685 forksTypeScriptMIT

En bref

De quoi s’agit-il ?
Ce que le README montre à propos de l'installation, du traitement des jobs, de FlowProducer, des comparaisons de fonctionnalités, des clients natifs et de la licence.
À qui s’adresse-t-il ?
BullMQ est une bibliothèque de files d'attente basée sur Redis, avec des clients natifs pour plusieurs langages, des exemples TypeScript pour Queue, Worker et FlowProducer, et une licence MIT. Le README suffit pour démarrer une file minimale, mais PostgreSQL, les benchmarks de performance et les détails opérationnels ne sont pas décrits dans le README. bullmq convient aux lecteurs qui acceptent les limites documentées par taskforcesh/bullmq.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement TypeScript, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le périmètre annoncé de BullMQ et les langages couverts

BullMQ est un dépôt écrit en TypeScript pour une bibliothèque de file de messages distribuée et de traitement par lots. Le README commence par déclarer qu'il s'agit de la file d'attente distribuée la plus rapide et la plus fiable basée sur Redis pour Node.js, Python, Elixir, Rust, PHP et plus, et qu'elle est écrite pour une stabilité et une atomicité solides. Cette déclaration provient du README lui-même ; le dépôt ne contient pas de benchmarks ni de mesures indépendantes pour l'étayer. Les métadonnées du dépôt mentionnent aussi PostgreSQL, mais le README ne parle que de Redis ; la prise en charge de PostgreSQL n'est donc pas établie par le README et doit être vérifiée dans la documentation. Le nom du paquet npm est bullmq. Le README renvoie aussi vers docs.bullmq.io et affiche un badge Slack pour rejoindre un espace de travail.

Le flux minimal repose sur `new Queue("Paint")`, `queue.add`, puis `new Worker("Paint", async job => ...)`. Pour les adaptateurs, le README exige `redis >= 5.0.0` avec `createNodeRedisClient` et cite `@valkey/valkey-glide` pour Valkey. Contrôle 1 : cette lecture est limitée aux faits exposés par taskforcesh/bullmq et ne transforme pas une affirmation du README en mesure indépendante.

Pour bullmq, le contrôle 1 porte sur la sortie et la limite explicitement décrites : consignez ce résultat avec la version du dépôt. Si le comportement diffère, le README de taskforcesh/bullmq ne permet pas de conclure seul sur la cause.

Installation et flux de travail minimal

Le README donne une seule commande d'installation : yarn add bullmq. Il précise ensuite que si vous utilisez l'adaptateur node-redis (createNodeRedisClient), installez redis v5 ou plus récent (redis >= 5.0.0), et pour l'adaptateur Valkey Glide, installez @valkey/valkey-glide. L'API centrale est montrée avec trois exemples TypeScript. Une Queue est créée avec un nom, et des jobs sont ajoutés avec queue.add('cars', { color: 'blue' }). Un Worker est construit avec le même nom de file et une fonction de rappel asynchrone qui reçoit le job et agit selon job.name. QueueEvents écoute les événements completed et failed, et reçoit jobId et failedReason. Ces extraits constituent la section « The gist » du README.

Le flux minimal repose sur `new Queue("Paint")`, `queue.add`, puis `new Worker("Paint", async job => ...)`. Pour les adaptateurs, le README exige `redis >= 5.0.0` avec `createNodeRedisClient` et cite `@valkey/valkey-glide` pour Valkey. Contrôle 2 : cette lecture est limitée aux faits exposés par taskforcesh/bullmq et ne transforme pas une affirmation du README en mesure indépendante.

Pour bullmq, le contrôle 2 porte sur la commande, le fichier ou l API cités dans cette section : consignez ce résultat avec la version du dépôt. Si le comportement diffère, le README de taskforcesh/bullmq ne permet pas de conclure seul sur la cause.

Arbres de jobs avec FlowProducer

Le README contient aussi un exemple FlowProducer pour ajouter des jobs avec des relations parent-enfant. L'exemple construit un arbre où un job racine sur topQueueName a deux enfants ; l'un des enfants a deux petits-enfants sur grandChildrenQueueName. L'appel add retourne originalTree, mais le README ne montre pas comment lire ce retour. Il dit simplement que ce n'est que la partie émergée de l'iceberg et renvoie à la documentation officielle sur docs.bullmq.io. Le README n'explique pas comment FlowProducer gère les nouvelles tentatives, les échecs ou le nettoyage de l'arbre, donc ces détails ne sont pas établis par cette source.

Le flux minimal repose sur `new Queue("Paint")`, `queue.add`, puis `new Worker("Paint", async job => ...)`. Pour les adaptateurs, le README exige `redis >= 5.0.0` avec `createNodeRedisClient` et cite `@valkey/valkey-glide` pour Valkey. Contrôle 3 : cette lecture est limitée aux faits exposés par taskforcesh/bullmq et ne transforme pas une affirmation du README en mesure indépendante.

Pour bullmq, le contrôle 3 porte sur la sortie et la limite explicitement décrites : consignez ce résultat avec la version du dépôt. Si le comportement diffère, le README de taskforcesh/bullmq ne permet pas de conclure seul sur la cause.

Tableau comparatif des fonctionnalités et portée de l'open source

Un tableau du README compare BullMQ-Pro, BullMQ, Bull, Kue, Bee et Agenda. Pour BullMQ open source, les fonctionnalités cochées sont les dépendances parent-enfant, la déduplication (debouncing et throttling), les priorités, la concurrence, les jobs différés, les événements globaux, le limiteur de débit, la pause/reprise, le worker sandbox, les jobs répétables, les opérations atomiques, la persistance et l'interface utilisateur. Le tableau indique aussi que BullMQ et BullMQ-Pro sont optimisés pour les jobs et les messages. Les observables, la limite de débit par groupe, la prise en charge des groupes et le support des lots ne sont cochés que pour BullMQ-Pro. Le tableau ne décrit pas comment ces fonctionnalités sont implémentées. Il liste également le backend de chaque outil : BullMQ, BullMQ-Pro, Bull, Kue et Bee utilisent redis, tandis qu'Agenda utilise mongo.

Le flux minimal repose sur `new Queue("Paint")`, `queue.add`, puis `new Worker("Paint", async job => ...)`. Pour les adaptateurs, le README exige `redis >= 5.0.0` avec `createNodeRedisClient` et cite `@valkey/valkey-glide` pour Valkey. Contrôle 4 : cette lecture est limitée aux faits exposés par taskforcesh/bullmq et ne transforme pas une affirmation du README en mesure indépendante.

Pour bullmq, le contrôle 4 porte sur la commande, le fichier ou l API cités dans cette section : consignez ce résultat avec la version du dépôt. Si le comportement diffère, le README de taskforcesh/bullmq ne permet pas de conclure seul sur la cause.

Clients natifs multilingues et frontend hébergé

BullMQ dispose d'implémentations natives dans plusieurs langages, chacune dans un sous-répertoire de ce dépôt. Le README liste Node.js et Bun (npm install bullmq), Python (pip install bullmq), Rust (cargo add bullmq-official --rename bullmq), Elixir ({:bullmq, "~> x.x"}) et PHP (sans commande de gestionnaire de paquets). Pour d'autres plateformes, il renvoie au proxy BullMQ. Le README fait aussi la promotion de Taskforce.sh comme frontend officiel, disant que cela peut 'supercharge your queues', et décrivant une vue d'ensemble des files, l'inspection des jobs, la recherche, la relance, la promotion des jobs différés et des métriques. Le README ne mentionne pas d'interface utilisateur auto-hébergée.

Le flux minimal repose sur `new Queue("Paint")`, `queue.add`, puis `new Worker("Paint", async job => ...)`. Pour les adaptateurs, le README exige `redis >= 5.0.0` avec `createNodeRedisClient` et cite `@valkey/valkey-glide` pour Valkey. Contrôle 5 : cette lecture est limitée aux faits exposés par taskforcesh/bullmq et ne transforme pas une affirmation du README en mesure indépendante.

Pour bullmq, le contrôle 5 porte sur la sortie et la limite explicitement décrites : consignez ce résultat avec la version du dépôt. Si le comportement diffère, le README de taskforcesh/bullmq ne permet pas de conclure seul sur la cause.

Utilisateurs listés, contribution et licence MIT

Le README liste Microsoft, Vendure, Datawrapper, Nest, Langfuse, Curri, Novu, NoCodeDB et Infisical comme organisations utilisant BullMQ, avec des liens vers leurs dépôts, mais ne décrit pas leurs cas d'usage. Pour contribuer, il est dit de forker le dépôt, de faire des modifications et de soumettre une pull request, avec un fichier contributing.md pour plus de détails. Le dépôt est sous licence MIT, copyright 2018 BullForce Labs AB et contributeurs. La licence accorde la permission d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et vendre des copies, et stipule que le logiciel est fourni tel quel sans garantie. Le README contient aussi un badge Slack et un lien vers un blog, mais ne mentionne ni service d'assistance ni processus de sécurité. Une section de sponsoring met en avant DragonflyDB comme remplacement direct de Redis compatible avec BullMQ.

Le flux minimal repose sur `new Queue("Paint")`, `queue.add`, puis `new Worker("Paint", async job => ...)`. Pour les adaptateurs, le README exige `redis >= 5.0.0` avec `createNodeRedisClient` et cite `@valkey/valkey-glide` pour Valkey. Contrôle 6 : cette lecture est limitée aux faits exposés par taskforcesh/bullmq et ne transforme pas une affirmation du README en mesure indépendante.

Pour bullmq, le contrôle 6 porte sur la commande, le fichier ou l API cités dans cette section : consignez ce résultat avec la version du dépôt. Si le comportement diffère, le README de taskforcesh/bullmq ne permet pas de conclure seul sur la cause.

Conclusion éditoriale

BullMQ est une bibliothèque de files d'attente basée sur Redis, avec des clients natifs pour plusieurs langages, des exemples TypeScript pour Queue, Worker et FlowProducer, et une licence MIT. Le README suffit pour démarrer une file minimale, mais PostgreSQL, les benchmarks de performance et les détails opérationnels ne sont pas décrits dans le README. bullmq convient aux lecteurs qui acceptent les limites documentées par taskforcesh/bullmq. Il ne convient pas à une décision fondée sur des promesses non accompagnées d exemples ou de mesures dans le README. Commencez par l entrée propre au projet, puis vérifiez la sortie, les dépendances et le comportement d erreur décrit dans ses fichiers.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté