We use BullMQ to process async jobs (AI reports, background tasks) across multiple workers. Compared to plain cron or in-process queues, Redis-backed persistence and retries make it much more reliable under load.
What needs improvement
The initial setup could be simpler. Configuring Redis, workers, and queues takes some effort before everything runs reliably.
vs Alternatives
I tried node-cron initially for simple scheduling, but it lacked persistence, retries, and queue management. BullMQ handled those requirements much better.