Skip to main content
EN
Home / Queues under pressure: backpressure, fairness and recovery
Jun 22, 2026 · Z-SOFT Admin · 10 min read

Queues under pressure: backpressure, fairness and recovery

Build queue workers that survive retries, protect dependencies and keep one large tenant from starving everyone else.

Back to all posts

In brief: A queue absorbs short bursts; without admission control it only turns overload into a growing delay.

The problem

Scaling workers by queue length alone can overwhelm the database or a third party. Mixed workloads cause head-of-line blocking, retries amplify incidents, and one bulk tenant can consume all available capacity.

Why the simple answer is not enough

Message count does not express customer impact: ten video encodes and ten emails are entirely different backlogs. Oldest-job age connects the queue to a service promise.

Worker autoscaling can move the bottleneck downstream. Every dependency needs a concurrency budget before the queue is allowed to scale.

System flow

Producer
admission and priority
Broker
isolated queues
Workers
bounded concurrency
Dependencies
protected budgets
Capacity is limited at admission and again at every worker dependency.

Architecture decisions

Isolate failure domains

Use separate queues or worker pools for interactive, bulk and third-party work so one slowdown does not block everything.

Enforce tenant fairness

Apply per-tenant in-flight quotas and weighted scheduling. Higher plans may get more weight, but no tenant gets infinite concurrency.

Bound every retry

Classify transient and permanent errors, then set attempts, elapsed deadline and dead-letter policy per class.

Going deeper

Backpressure begins at admission

When predicted delay exceeds the objective, reject, defer or degrade low-priority work. Accepting everything creates promises the platform cannot meet.

Recovery must be paced

After an outage, drain backlog with a ramp and dependency-aware limits. Instantly releasing all workers often causes a second outage.

Implementation path

  1. Classify jobs by latency objective, cost and tenant before enqueueing.
  2. Give each job an idempotency key, retry budget and terminal failure policy.
  3. Scale on queue age while capping concurrency at the real downstream budget.

Technical example: Lease-based idempotent job handling

job = broker.receive(visibilityTimeout = 60s)
if inbox.exists(job.id): ACK
with dependencyLimiter.acquire(job.kind):
  result = handle(job.payload)
  transaction(inbox.insert(job.id), save(result))
ACK

Set visibility timeout above normal execution and extend it with a heartbeat for genuinely long jobs.

Failure modes to design for

  • Visibility expires while work continues, producing concurrent duplicate execution.
  • A retry storm starts when a shared dependency recovers only partially.
  • A dead-letter queue grows silently and becomes permanent data loss.

What to observe

SignalWhy it matters
Oldest job age by classDirectly measures missed latency objectives.
Attempts and failure reasonShows whether retries are helping or multiplying a permanent error.
In-flight work by tenantMakes noisy-neighbour behaviour visible.

How to validate the design

  • Throttle the database and prove worker concurrency stays inside its budget.
  • Send a large bulk job from one tenant and verify interactive jobs still meet their objective.
  • Expire a lease mid-job and prove duplicate execution has one result.

Safe rollout plan

Instrument queue age and retry reasons first. Split one risky workload into its own pool, add limits in observe-only mode, then enforce them for a small tenant cohort. Practise dead-letter replay before relying on it.

Production checklist

  • Queue age matters more than message count when job costs vary.
  • Retries use exponential backoff with jitter and a finite deadline.
  • Dead-letter queues have owners, alerts and replay tooling.

Takeaway

A production queue is a capacity-control system, not an unlimited buffer.

Your strategic technology partner

Turn your business challenge into a clear roadmap.

Talk directly with the Z-SOFT team about your goals, your current situation and the best next step.

Book a consultation