# SQS Cost Explosion Prevention Checklist (July 2026)

## Queue defaults

- [ ] `ReceiveMessageWaitTimeSeconds = 20` (long polling)
- [ ] `MaxNumberOfMessages = 10` where consumers support batching
- [ ] Visibility timeout ≈ max processing × 1.5 (+ ChangeMessageVisibility for long jobs)
- [ ] `maxReceiveCount` + DLQ; alarm on DLQ depth > 0

## Worker caps

- [ ] Max concurrency / reserved Lambda concurrency set to a cost ceiling
- [ ] Backoff with **full jitter** on retries
- [ ] Idempotency keys (at-least-once delivery)

## Alarms

- [ ] Visible vs NotVisible ratio (retry-storm signature)
- [ ] Age of oldest message
- [ ] NumberOfEmptyReceives (if short polling sneaks back)

## Recovery

- [ ] Rate-limit backlog replay; step-scale workers; watch downstream DB
