← All articles

Inngest vs BullMQ: which queue for Italian projects in 2025

26 August 20252 min read

Serverless job processing or self-hosted Redis: two philosophies. When we pick which, and why.

"I need a job queue" is an increasingly common request. Two serious options in Node.js: Inngest (serverless-first, SaaS) and BullMQ (self-hosted Redis). Let's compare.

BullMQ

Node.js library + Redis. Pros:

  • Self-hosted; Redis cost is essentially the only cost (€5-15/mo on Hetzner).
  • Full control: priority, rate limiting, concurrent processing, scheduled jobs.
  • Mature, stable, millions of monthly downloads.

Cons: needs an always-on Redis (no pure serverless), workers and crash recovery on you, observability you build.

Inngest

SaaS that runs step-based functions via webhook. Pros:

  • Zero infra: you write a function, it runs.
  • Automatic step recovery: if step 3 of 5 fails, resumes at 3.
  • Great debug dashboard.
  • Native cron, fan-out, sleeps inside functions.

Cons: moderate vendor lock-in, cost grows with volume (free up to 50k steps/mo, then starter ~$50/mo).

When which

CasePick
Below 1k jobs/day, serverless appInngest (free tier fits)
1k-100k jobs/day, stable backendBullMQ + Redis
Above 100k jobs/dayBullMQ with cluster, no serverless
Long jobs (hours) with complex stepsInngest
Short, high-throughput jobsBullMQ

Operational lesson

For most Italian projects we ship (Node backend + Hetzner + Postgres), BullMQ wins for predictable cost and control. For edge-native SaaS where serverless infra is already chosen, Inngest is the natural complement. No outright winner.