At-least-once delivery, ack timing, and idempotency keys — designing queue consumers that neither lose nor duplicate
Assuming a queue may deliver the same message more than once, this explains how to ack only on success, block duplicate execution with an idempotency key, and report when redelivery is exhausted