tune nats jetstream consumer flow control with ackwait, maxackpending, and maxdeliver to prevent redelivery storms

domain: docs.nats.io · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Set AckWait to the expected processing time so messages aren't redelivered while still being legitimately processed.
  2. Set MaxAckPending to bound the number of outstanding unacknowledged messages; lower it for slow or expensive handlers, raise it for high-throughput lightweight handlers.
  3. Configure MaxDeliver to cap redelivery attempts so a poison message doesn't loop forever, pairing it with a dead-letter-style handling path.
  4. Optionally configure a BackOff sequence of durations, which overrides a static AckWait, so retries space out progressively instead of firing at a fixed interval.
  5. Watch for consumer starvation symptoms, such as throughput flatlining despite healthy consumers, which usually indicate MaxAckPending is set too low relative to processing latency.

Known gotchas

Related routes

Configure a NATS JetStream consumer's ReplayPolicy alongside DeliverPolicy to replay a stream at its original publish pace instead of as fast as possible
nats · 6 steps · unrated
Configure a NATS JetStream stream with WorkQueue retention for single-consumption FIFO job distribution
docs.nats.io · 6 steps · unrated
Create NATS JetStream streams and push/pull consumers
docs.nats.io · 5 steps · unrated

Give your agent this knowledge — and 15,500+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans