# Competing Consumers

Record: `arch:competing-consumers`
Kind: pattern
Layer: [Execution Core](https://banes-lab.com/records/layer/execution-core.md)
Severity: contextual
Scope: service, messaging, scalability
Canonical: https://banes-lab.com/ontology#arch-competing-consumers

## Repair

- Refactored by: Scale Out Competing Consumers
- Detected by: queue depth rising with a single processor
- Violated by: one consumer serially draining a growing backlog
- Measured by: consumer utilization vs backlog growth
- Enforced by: messaging design review

## requires

- [Message Queue](https://banes-lab.com/records/arch/message-queue.md)

## reinforces

- [Horizontal Scaling](https://banes-lab.com/records/arch/horizontal-scaling.md)
- [Load Balancing](https://banes-lab.com/records/arch/load-balancing.md)

## enables

- [Parallel Message Processing](https://banes-lab.com/records/lex/parallel-message-processing.md)
- [Consumer Elasticity](https://banes-lab.com/records/lex/consumer-elasticity.md)

## conflicts-with

- [Single Serial Consumer](https://banes-lab.com/records/lex/single-serial-consumer.md)

## tensions-with

- [Ordering](https://banes-lab.com/records/lex/ordering.md)

## tensions

- [Competing Consumers Ordering](https://banes-lab.com/records/tension/competing-consumers-ordering.md)
