// Learning · 07
Patterns for when calls fail and messages arrive twice.
Doing it twice has the same effect as doing it once.
Saves the event in the same breath as the data, so it can't get lost.
No single big transaction. Each step knows how to undo itself.
Try again, waiting longer each time, with a little randomness.
Stop calling a service that's already drowning, so it can recover.
Separate resource pools, so one flooded feature can't sink the ship.
Where messages go after too many failed attempts, to be looked at.
Cap how many requests a caller gets per window of time.
Only one process, across many machines, does this at a time.
Let a slow consumer tell a fast producer to ease off.