Message Ordering, Backpressure, and RabbitMQ DLQs on AWS
Quick summary: FIFO guarantees shrink throughput—and unbounded queues only move backpressure to your AWS bill. Ordering, flow control, and Amazon MQ dead-letter patterns vs Kinesis resharding.
Key Takeaways
- FIFO guarantees shrink throughput—and unbounded queues only move backpressure to your AWS bill
- Ordering, flow control, and Amazon MQ dead-letter patterns vs Kinesis resharding
- June 2026: SQS FIFO gives order within message group at 300 TPS/group scale—ordering has a throughput price
- 4% poison messages without blocking main queue
- 2
Table of Contents
June 2026: SQS FIFO gives order within message group at 300 TPS/group scale—ordering has a throughput price. Standard queues maximize throughput without global order.
Symptom → mechanism → AWS control
| Production symptom | Mechanism | AWS control |
|---|---|---|
| Out-of-order processing | Multiple competing consumers | Single active consumer or partition-key ordering |
| Consumer OOM under burst | Unbounded prefetch | RabbitMQ prefetch limit, SQS maxReceiveCount |
| Poison message blocks queue | No dead-letter path | Amazon MQ DLQ, SQS redrive policy |
Opinionated take: Prefer SQS FIFO or MSK partition ordering over RabbitMQ on AWS unless you need AMQP protocol compatibility—DLQ everything.
Benchmark pattern (hypothetical workload) — Amazon MQ RabbitMQ, ordered queue 2K msgs/sec, consumer prefetch=10 prevents OOM; backpressure via publisher confirms stalls at 85% queue depth; DLQ captures 0.4% poison messages without blocking main queue.
Ordering guarantees
| System | Guarantee |
|---|---|
| SQS FIFO | Per MessageGroupId |
| Kinesis | Per partition key |
| MSK | Per partition |
| RabbitMQ | Single active consumer per queue |
Backpressure
Producers faster than consumers → queue depth grows → latency and cost. Responses:
- Scale consumers (ECS/EKS HPA on custom metric
ApproximateNumberOfMessagesVisible) - Drop to DLQ with alarm threshold
- Rate limit producers at API Gateway
Amazon MQ (RabbitMQ) DLQ
Configure dead-letter exchange + TTL; mirror to CloudWatch via plugin/logs. Retry with exponential backoff—do not infinite requeue.
AWS services map
| Need | Service | Skip when |
|---|---|---|
| AMQP with ordering | Amazon MQ RabbitMQ | Kafka partition ordering suffices |
| Managed DLQ | SQS dead-letter queue | Fire-and-forget SNS with no retry |
| Backpressure signal | SQS ApproximateAgeOfOldestMessage alarm | Synchronous HTTP with client-side retry only |
What to do this week
- Set
maxReceiveCounton SQS redrive policy. - Alarm queue age p99 > SLO.
- Document ordering requirements per event type—downgrade to standard where possible.
More in This Track
Part of the Engineering Guides library (June 2026).
- Previous: Part 1
- Next: Part 3
- Browse tracks: Engineering Guides hub
What this guide doesn’t cover
MSK EOS—part 1 of track.
AWS Cloud Architect & AI Expert
AWS-certified cloud architect and AI expert with deep expertise in cloud migrations, cost optimization, and generative AI on AWS.