BullMQ
Redis-based job queue, background workers
About
A Node.js job and message queue library built on top of Redis. Handles background job processing with retries, delays, rate limiting, and concurrency — without a separate message broker. Jobs are persisted in Redis and processed by workers in the same or separate processes.
Why
RabbitMQ requires too much memory for small servers. BullMQ gets you the same async processing patterns — queues, retries, workers — using Redis you already have running.
Notes
Same idea as RabbitMQ — accept the request, put the work in a queue, process it separately. The difference is that BullMQ runs entirely on Redis, which you probably already have. No extra service, no extra memory.
@nestjs/bull wraps it cleanly — a @Processor decorator on a class, a @Process method inside it, and the queue is wired into the DI container. Retries and backoff are options on the job, not infrastructure.
Chose it over RabbitMQ for a constrained server environment. The tradeoff is a less powerful routing model — but for a single queue sending Discord notifications, it's more than enough.