Skip to content
inetGeek

Message queue services and background jobs, compared

Each provider is profiled from its own documentation, with the source recorded against every figure. No two of these bill for the same thing — operations, messages, executions, credits — so the included allowance names its own meter rather than pretending to be a comparable number.

Updated Sources last checked

ProviderMessage retentionMax message sizeMax delayConcurrency
Amazon SQS4 days by default; configurable from 60 seconds up to 14 days per queue.256 KB per message. A single request carries 1 to 10 messages up to 1 MiB total, and each 64 KB chunk of payload is billed as one request.15 minutes maximum per-message delay (message timer) or per-queue delay; default is 0 seconds.Approximately 120,000 in-flight messages per standard queue (received but not yet deleted); API call rate on standard queues is nearly unlimited.
Azure Queue Storage7 days by default, set per message with messagettl; since version 2017-07-29 it can be any positive number, or -1 for a message that never expires.64 KB per message. A queue may hold millions of messages, bounded only by the storage account's capacity rather than a queue-level ceiling.Time-to-live defaults to seven days and can be set to any positive number, or to -1 for a message that never expires — the only queue here with an unbounded option.Not documented
Cloudflare Queues4 days by default on Workers Paid, configurable up to 14 days. Workers Free is fixed at 24 hours.128 KB per message, with roughly 100 bytes of that taken by internal metadata.24 hours, set with delaySeconds when sending or retrying.250 concurrent consumer invocations, push-based only, with per-queue throughput capped at 5,000 messages a second.
Google Cloud Pub/SubRetention is configurable and charged rather than granted: $0.27 per GiB-month for messages a topic is configured to retain, for snapshots, and for a subscription's backlog older than one day. A subscription's default retention is 7 days.Pub/Sub bills on bytes rather than message count; the pricing page states no per-message size ceiling and prices throughput and storage instead.Not documentedNot documented
HatchetRun history, logs and traces stay queryable for 1 day on Pay-as-you-go without a card, 7 days with a card on file, and 90+ days on Custom. This is dashboard and API history, not how long an undelivered task waits in the queue, so no magnitude is recorded.4 MB default maximum payload size for a task's input or output between worker and Hatchet engine.Not documented2,000 worker slots (tasks running at once, totalled across all workers) on Pay-as-you-go without a card, 10,000 with a card on file; Custom gets dedicated capacity. No requests-per-second ceiling is published.
InngestQueue depth rather than a time window: 100,000 queued items on the free plan and 1,000,000 or more on Pro. Trace retention is 7 days on Pro and 90 on Enterprise.4 MiB per step-returned payload; 32 MiB total function run state; 10 MiB hard cap per event batch.Step sleeps up to 1 year on paid plans; the free plan supports sleeps up to 7 days.5 concurrent steps on the free plan, 100 or more on Pro, custom on Enterprise.
TemporalClosed workflow Event History is kept for a Retention Period set per Namespace, up to 90 days on Temporal Cloud; longer needs the Export feature. Business includes 2.5 GB Active and 100 GB Retained Storage. Recorded without a magnitude: this is workflow-history retention, not how long an undelivered message survives.2 MB maximum payload per request (each Workflow/Activity argument or return value); 4 MB per Event History transaction, non-configurable.Timers (durable sleeps) may run up to 100 years in Temporal Cloud.500 Actions per second per Namespace by default, auto-scaling above that with On-Demand Capacity; 20,000 Activity and 20,000 Workflow Task pollers per Namespace.
Trigger.devLog retention of 1 day on the free plan, 7 days on Hobby and 30 days on Pro, with the query period matching.3 MB per trigger payload (each batch item up to 3 MB on SDK 4.3.1+); task outputs up to 10 MB; payloads over 512 KB offloaded to object storage.Not documented20 concurrent runs on the free plan, 50 on Hobby, and more on Pro at $10 a month per additional 50.
Upstash QStashDead letter queue retention of 3 days on the free plan, 7 days on Pay as You Go, 30 days and 3 months on the fixed plans.1 MB on the free plan, 10 MB on Pay as You Go and 50 MB on the fixed plans.7 days on the free plan; 1 year on Pay as You Go and unlimited on the fixed plans.Not documented
Zeplo30 days of log retention on every plan — free, Company and Enterprise alike. The longest window in this category by a wide margin.256 KB inline request body (unlimited via S3 offload); plan payload caps are 64 KB on Developer and 1 MB on Company.30 days (2,592,000 seconds) maximum delay_seconds per request.API rate limit rather than a concurrency figure: 100 requests/min on Developer (Free) and 2,000 requests/min on Company ($39/mo).

Which to consider

Amazon SQS

AWS-resident systems that want a queue with a permanent free million requests a month and no capacity to plan — SQS scales without a throughput setting to choose.

Editorial · Palash Bagchi

Azure Queue Storage

Azure-resident systems that want a queue billed like storage — operations plus depth, no plan to choose and no capacity to provision.

Editorial · Palash Bagchi

Cloudflare Queues

Workers applications that want a queue with no egress or throughput charges and a retention window measured in days rather than hours.

Editorial · Palash Bagchi

Google Cloud Pub/Sub

Google Cloud systems that want messaging without capacity planning — throughput is metered rather than provisioned, and 10 GiB a month costs nothing.

Editorial · Palash Bagchi

Hatchet

Task workloads that want a countable unit and no plan fee: 1M task runs and 1M events free each month with a card on file, then $30 per million runs, with 10,000 concurrent worker slots before any contract.

Editorial · Palash Bagchi

Inngest

Multi-step workflows that need durable execution and retries between steps, rather than a bare queue you write a consumer for.

Editorial · Palash Bagchi

Temporal

Long-running, stateful workflows where losing execution history is the failure that matters — Temporal keeps event history as first-class storage rather than logs that expire.

Editorial · Palash Bagchi

Trigger.dev

Teams that want background jobs written as normal code with the bill expressed as compute credits rather than a per-message meter.

Editorial · Palash Bagchi

Upstash QStash

HTTP-first workloads that want scheduling and delay measured in months rather than a day, without running a consumer process.

Editorial · Palash Bagchi

Zeplo

Turning an HTTP endpoint into a queued, retried job without running a consumer — and keeping a month of logs while doing it, which nothing else here offers on a free plan.

Editorial · Palash Bagchi

Queues and background jobs in the news

Headlines from other publications, not checked by us · collected

Selected by a search on this sector, refreshed weekly. Nobody here has verified these claims — where something material is confirmed, it is written into the page above with its source, the way every other fact on this site is.

Comments

When these numbers change, hear about it. Sources are re-checked monthly; a repricing goes out as a short note.

Confirm by email; unsubscribe from any issue. Your address goes to Kit and nowhere else — what we do with it.

Every page here is sourced and dated.