BullMQ runtimes

BullMQ has libraries for Node.js, Python, Rust, Elixir, PHP and .NET, on Redis or PostgreSQL. They all run the same Lua and SQL scripts, so a job added in one language can be processed in another.

Feature support

The core queue behavior is the same in every library because they all run the same scripts. Higher-level features are added to each library separately, and this table shows what each one supports today.

Feature Node.js Python Rust Elixir PHP .NET
Add jobs to queues Supported Supported Supported Supported Supported Supported
Process jobs (workers) Supported Supported Supported Supported Not available Supported
Delayed jobs Supported Supported Supported Supported Supported Supported
Repeatable / scheduled jobs Supported Supported Supported Supported Supported Supported
Job priorities Supported Supported Supported Supported Supported Supported
Rate limiting Supported Supported Supported Supported Not available Supported
Retries & backoff Supported Supported Supported Supported Supported Supported
Flows (parent / child) Supported Supported Supported Supported Not available Supported
Job events Supported Supported Supported Supported Not available Supported
Redis backend Supported Supported Supported Supported Supported Supported
PostgreSQL backend Supported Soon Soon Supported Soon Supported
BullMQ Pro Supported Soon Soon Soon Soon Soon

Supported Soon Coming soon Not available

Choosing a runtime

Node.js has the most features. Otherwise, use the library for the language your service is already written in. The queue works the same way from any of them.