# Idempotent Consumer

Record: `arch:idempotent-consumer`
Kind: pattern
Layer: [Execution Core](https://banes-lab.com/records/layer/execution-core.md)
Severity: mandatory for distributed systems
Scope: service, messaging, correctness
Canonical: https://banes-lab.com/ontology#arch-idempotent-consumer

## Repair

- Refactored by: Make the Consumer Idempotent
- Detected by: duplicate effects under at-least-once delivery
- Violated by: a redelivered message applied twice
- Measured by: duplicate-processing incident rate
- Enforced by: messaging design review

## requires

- [Deduplication Key](https://banes-lab.com/records/lex/deduplication-key.md)

## reinforces

- [Eventual Consistency](https://banes-lab.com/records/arch/eventual-consistency.md)
- [At-Least-Once Delivery Safety](https://banes-lab.com/records/lex/at-least-once-delivery-safety.md)

## enables

- [Safe Message Redelivery](https://banes-lab.com/records/lex/safe-message-redelivery.md)

## conflicts-with

- [Duplicate Side Effects](https://banes-lab.com/records/lex/duplicate-side-effects.md)

## tensions-with

- [State Overhead](https://banes-lab.com/records/lex/state-overhead.md)

## tensions

- [Idempotent Consumer State Overhead](https://banes-lab.com/records/tension/idempotent-consumer-state-overhead.md)
