Bull is a Redis-based queue for Node.js that handles distributed jobs and messages with priority, rate-limiting, and scheduling capabilities.
Bull solves the problem of reliably processing asynchronous work across distributed systems. It uses Redis as a backing store to maintain job state and ordering, providing atomicity guarantees so that jobs are processed exactly once even in the face of worker failures. The library handles job retries, delays, priorities, and rate limiting through careful coordination with Redis operations.
Bull suits projects that need robust job processing with Redis already in their infrastructure. It works well for background task processing, message queuing, and scheduled work in Node.js applications. The tool is particularly valuable for systems where job reliability and ordering matter, and where you want to avoid losing work during crashes or restarts.
The project is in maintenance mode, accepting only bug fixes while development of new features has moved to a modern TypeScript rewrite. The tool remains actively used and battle-tested across organizations of varying sizes.