Compare

SimpleQ vs BullMQ

BullMQ is powerful — but you run the Redis. You provision it, patch it, monitor it, scale it, and hope it doesn't run out of memory on a Friday night. SimpleQ replaces that infrastructure with a managed service purpose-built for webhook delivery to AI and API-heavy backends — backpressure that never burns retries, a three-signal ack protocol, per-job audit trails, and queue templates for LLM workloads, all included.

FeatureSimpleQBullMQ + Redis
ManagedYes — no infra to runNo — requires Redis
Delivery modelPush (webhook POST)In-process worker (pull)
RetriesConfigurable backoff (exponential/fixed)Configurable backoff
Rate limitingPer-queue fixed-window, built-inRate limiter extension (requires extra Redis config)
Ack modeThree-signal protocol: ack (success), nack (failure with retryable flag), defer (backpressure — redelivers without burning attempts). Once the callback returns 200, the outcome is guaranteed.No — job succeeds or fails in the worker process. No backpressure signal.
Backpressure429/503/529 auto-defers with Retry-After relay. Ack-mode /defer does the same. Neither burns a retry attempt — a job can ride out 100 consecutive 429s and still complete.Manual — throw an error to trigger retry. Every retry counts against maxAttempts.
Dead-letter queueBuilt-in with single + bulk replay via API and dashboardFailed job retention (manual retry)
IdempotencyPublish-boundary dedup — returns existing job ID on duplicate, safe-to-retry publishersManual — caller must check for existing jobs
Queue templatestemplate: "anthropic" or "openai" — one field configures ack mode, timeout, and backoff tuned for each provider's APINone
Per-job audit trailFull attempt history: status, error, HTTP code, timestamp per attemptBull Board (community) or BullMQ Pro dashboard
Webhook signingHMAC-SHA256 with per-queue secret — a leaked secret affects one queue, not the orgN/A (in-process, no webhook)
AI workload supportAnthropic and OpenAI queue templates, seconds convention matching provider Retry-After headers, ack mode for long LLM callsNone
PrioritiesNoYes (priority queues)
Repeatable jobsNo (cron not supported yet)Yes (cron + every-N patterns)
Flows/dependenciesNoYes (parent-child flows)
DashboardBuilt-in real-time dashboardBull Board (community) or BullMQ Pro
PricingFree during early accessFree (OSS) + Redis hosting costs

When to choose SimpleQ

  • You don't want to run Redis. No provisioning, patching, monitoring, scaling, or debugging OOM kills on a stateful data store.
  • Your downstream APIs return 429s and every retry burns one of your 3-5 attempts. With BullMQ, throwing an error triggers a retry that counts. SimpleQ's defer mechanism holds the job and redelivers after the Retry-After delay — no attempt burned. A job can ride out 100 consecutive 429s and still complete.
  • Your work takes longer than 15 seconds. BullMQ workers process jobs synchronously — if your LLM call takes 60 seconds, the worker is blocked. SimpleQ's ack mode lets your handler return 200 immediately, then report success, failure, or backpressure through three distinct callbacks.
  • You want one POST to configure a production-ready AI queue. template: "anthropic" or "openai" sets ack mode, timeout, and exponential backoff tuned for each provider's API.
  • You want push delivery to a webhook instead of running persistent worker processes. Your worker is a plain HTTP endpoint — deploy it anywhere, in any framework.
  • A job failed and you need the full story. SimpleQ logs every attempt with status, error, HTTP code, and timestamp. No Bull Board setup required.
  • You want DLQ with replay built into the API and dashboard — not manual job-ID lookups and re-publishes.

When to choose BullMQ

  • You need priority queues, parent-child flows, or repeatable (cron) jobs — BullMQ has richer job-orchestration primitives.
  • You want in-process workers with direct access to your application context — no HTTP serialization overhead.
  • You want open-source with no vendor dependency and full control over the queue internals.

Migrating from BullMQ?

Your job-processing logic stays the same — the shell changes. With BullMQ, your worker pulls jobs from Redis in-process. With SimpleQ, you expose a webhook endpoint that receives the job as a POST. Return 2xx on success, or use ack mode for long-running work: return 200 immediately, then call /ack, /nack, or /defer when the work resolves. The infrastructure you drop: Redis provisioning, monitoring, scaling, worker process management. What you gain: managed backpressure, per-job audit trails, DLQ replay, and per-queue signing secrets. If you're calling LLM APIs, start with template: "anthropic" or "openai".