Two workers, one message
A read-then-update claim lets two consumers pick up the same queued document.
Claimed messages with a single SQL statement that updates one row and returns it, so there is no gap for a race. Messages stuck in processing after 10 minutes are recovered, and after 3 attempts they go to a dead-letter list that operators can requeue.