# Competing Consumers

> Multiple consumers race to process messages from one queue — automatic load balancing and scale-out.

- **Category**: Integration
- **Subcategory**: Messaging Endpoints
- **Canonical URL**: https://designpattern.fyi/patterns/competing_consumers/

---

## Description
Clean, reusable architecture pattern.


## Use Cases
Image resizing service — all image resize requests land on one SQS queue. 20 Lambda functions compete for messages. AWS distributes load automatically. During a marketing campaign spike — Lambda auto-scales to 200 instances. No code changes, just scale.





## Trade-offs


### Advantages

- Trivial horizontal scale-out — add more consumer instances

- Automatic load balancing by the broker

- Fault tolerance — if one consumer dies, others keep processing

- No coordination code needed in consumer logic




### Considerations & Drawbacks

- Message ordering is not guaranteed — competing consumers process in parallel

- Requires Idempotent Consumer if broker delivers duplicates (at-least-once)

- Shared queue can cause hotspot issues if messages are not evenly processable

- Consumer scaling decisions still need a trigger (queue depth metric, CPU, etc.)







---
**Reference**: [Original Source](https://www.enterpriseintegrationpatterns.com/patterns/messaging/CompetingConsumers.html)

