See where this is going?
12 hours had elapsed and there were thousands of events on the queue. I reverted the commit that was blocking the queue and let it drain.
OK, X,000 less important analytics events and a few dozen phone calls scheduled for this morning delivered within a half hour of scheduled time.
That was not what had happened.
When I restarted the queue, they all fired within 2 minutes.
The telecom system is very capable of delivering 80 phone calls in 2 minutes.
Phones don’t tolerate that so well.
Most people pulled the cord from the wall before counting to ~70.
I walked across town, in freezing rain, holding a laptop and wired phone, so that I could deliver apology calls to customers and customers’ customers.
We actually lost two customers. One came back after receiving an explanation.
Anyhow, that’s why you add to queues using an idempotency key.