BullMQ
A robust background-job and message queue for Node.js, written in TypeScript and backed by Redis. Itβs the Node ecosystemβs answer to Celery: you define a queue, add jobs to it, and process them in workers β with retries, exponential backoff, rate limiting, delayed/scheduled jobs, repeatable (cron) jobs, priorities, and flows (parent/child job trees). The successor to the original Bull library.
Links
Description
- Queues & workers β add jobs to a Redis-backed queue, process them in separate worker processes.
- Retries & backoff β configurable attempts with fixed/exponential delay.
- Rate limiting β cap jobs processed per time window (e.g. to respect external API limits).
- Scheduling β delayed jobs and repeatable cron-style jobs.
- Flows β parent jobs that fan out to children and aggregate results.
- Observability β events, metrics, and dashboards (Bull Board / Taskforce).
Download or use
npm i bullmq # requires a Redis instance- Site/docs: docs.bullmq.io
- Repo: github.com/taskforcesh/bullmq
Reasoning for
BullMQ is the background-job runner in the Tech To The Rescue platform β the Next.js + Postgres stack offloads embedding generation, syncs, and other slow work to BullMQ workers on Redis, keeping request handlers fast. Itβs the natural pick there because the whole stack is TypeScript: one language, typed job payloads, and rate limiting to stay within external API quotas (relevant when generating embeddings in bulk). Conceptually it plays the same role Celery plays for the Python Travelcast AI generator β Redis-backed durable jobs with retries β just on the Node side.
Alternatives considered
- Celery β the Python equivalent; BullMQ is chosen when the codebase is Node/TypeScript.
- RabbitMQ β a heavier, broker-grade option with stronger routing/acking; BullMQ is simpler and Redis is already present.
- Graphile Worker / pg-boss β Postgres-backed Node queues (no extra Redis); good when you want one fewer service, fewer features than BullMQ.
- Inngest / Trigger.dev β managed durable-workflow platforms; less infra but external dependency and cost.
Resources
- π BullMQ docs
- π§© Flows (parent/child jobs)
- π§ Rate limiting
Template: tool