finds.dev← search

// the find

taskforcesh/bullmq

★ 9,000 · TypeScript · MIT · updated Jun 2026

BullMQ - Message Queue and Batch processing for NodeJS, Python, Elixir and PHP based on Redis

BullMQ is a Redis-backed job queue for Node.js with official ports to Python, Rust, Elixir, and PHP that all share the same Redis data structures. It handles the hard parts of distributed job processing: atomic state transitions via Lua scripts, parent/child job dependencies, rate limiting, stalled job detection, and repeatable jobs. If you're running Node.js background jobs on Redis, this is the current default choice.

All critical operations are implemented as Lua scripts that run atomically on Redis — no race conditions when multiple workers compete for the same job. The FlowProducer parent/child dependency model is genuinely useful for DAG-style pipelines where a parent job waits on N children before proceeding. The multi-language story is real: Python, Elixir, Rust, and PHP all share the same Redis key schema, so a Python worker can drain a queue that Node.js produced. Active maintenance with semantic-release, 9k stars, and production usage at Novu, NocoDB, and Langfuse gives it credibility.

Redis is the only backend — if you want Postgres or SQLite for job storage (lower ops overhead, easier backups, transactional job creation), you're looking at a different library entirely. The best features (job groups, batch processing, group rate limiting, observables) are paywalled behind BullMQ-Pro, which isn't priced publicly. The Python, Elixir, and PHP ports are significantly less mature than the Node.js core — the PHP port in particular has a thin test suite and only covers Queue and basic job operations. Scaling past a single Redis node means Cluster mode, which has known limitations with multi-key Lua scripts that require careful key routing.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →