Reliable background jobs in NestJS with BullMQ: retries, idempotency and the transactional outbox
How to build background jobs in NestJS 12 with BullMQ 6 that never silently lose work and never charge a customer twice: at-least-once delivery and idempotency, the transactional outbox, retries with error classification, dead letters, rate limiting, graceful shutdown and observability.
Systems & architecture25 min