msg.nack(). AsyncBase schedules a retry
with exponential backoff. After N nacks (default 3), the message lands in
the queue’s Dead Letter Queue.
Backoff formula
3. Override per-message:
Inspect the DLQ
Redrive
batch is 100, max 1000. Calling twice is safe but pulls the NEXT
batch, not the same one.
Alerts on DLQ threshold
Set up from /settings/alerts or via API:queue_name to watch all queues.
Best practices
Pass the right attempt
Pass the right attempt
The nack endpoint expects
attempt=<current value>. All SDKs do this
automatically via the bound msg.nack().Make handlers idempotent
Make handlers idempotent
At-least-once delivery means you WILL see the same message twice under
load. Key your side effects by
msg.id or a business key.Set a DLQ alert on Pro+
Set a DLQ alert on Pro+
If the DLQ grows silently, users churn before you notice.
Don't redrive blindly
Don't redrive blindly
First fix whatever broke, then redrive. Otherwise the same 100 messages
bounce back into the DLQ.