#1
The goal is exactly-once business outcomes
A message delivered twice is usually better than a message lost forever.
That's the trade-off behind most reliable messaging systems.
Retries happen. Brokers crash. Consumers crash. Networks fail. Messages get redelivered.
The goal is not exactly-once delivery.
The goal is exactly-once business outcomes.
That's why idempotency is one of the most important patterns in distributed systems.
Design for duplicate delivery.
Design for failure.