Node.js app already on PostgreSQL? Start with pg-boss. Need a requests-per-second limiter, workers in other languages or Redis throughput? Pick BullMQ.
A Node.js job queue built only on PostgreSQL 13+. Workers claim jobs with SKIP LOCKED, so many of them can share a queue without blocking each other.
BullMQ 6.0, released July 30, 2026, added a PostgreSQL backend with the same Queue and Worker API. Its docs say Redis is still the default.
BullMQ's own guide puts processing on Postgres at roughly 1.5 to 2 times fewer jobs per second than on Redis. Benchmark with your real payloads.
pg-boss can create a job in the same transaction as your data, with adapters for Drizzle, Knex, Kysely and Prisma. Save the post and queue it together.
pg-boss startAfter takes seconds, a Date or an ISO date with offset, and update() can move a queued job. BullMQ takes a delay in milliseconds.
pg-boss: cron or RRULE with a time zone, checked every 30 seconds, one job per minute at most. BullMQ: Job Schedulers with cron (seconds allowed) or intervals.
BullMQ has a global limiter and can pause the queue on a 429. pg-boss has throttling slots, queue policies and group concurrency, but no N-per-second limiter.
pg-boss defaults to 2 retries, supports exponential backoff and dead letter queues. BullMQ uses attempts with fixed, exponential or custom backoff.
Both deliver at least once, so a publish call needs an idempotency key. Keep the post row as the source of truth and the job as a pointer to it.
A feature table, pg-boss code for a dated job, a reschedule and a cron schedule, plus a checklist for scheduled social media posts.
postgate.studio