Make handlers idempotent

Visibility and atomic handoff (for external queues)

so in external queues we don’t need to use locking here ? **

If handler raises and you swallow the error (catch + not requeue), the item is done: queue.task_done() is called and the message is lost (no retry).

If you want retries :

Where to attach metadata:

when an outbox poller claims the row will it publish it to queue just like as we are publishing(enqueing) from route