FAQ: Retry And Delivery¶
When Does Retry Occur?¶
Retry occurs only when:
args.Acknowledged = false;
args.Requeue = true;
What Happens If Requeue Is False?¶
Example:
args.Acknowledged = false;
args.Requeue = false;
The message does not enter the retry flow.
What Happens If Acknowledged Is True?¶
Example:
args.Acknowledged = true;
The message is considered successfully processed.
What RabbitMQ Objects Are Created For Retry?¶
When retry is enabled, the provider creates:
<queue>_dlx
<queue>_retry exchange
<queue>_retry queue
along with the required bindings.
How Does The Retry Flow Work?¶
Main Queue
↓
Subscriber Failure
↓
DLX Exchange
↓
Retry Queue
↓
TTL Expires
↓
Retry Exchange
↓
Main Queue
Is Subscriber Retry The Same As Publisher Retry?¶
No.
Subscriber retry:
RetryPolicyDescriptor
controls message reprocessing.
Publisher retry:
PubRetryPolicyDescriptor
controls retrying publish operations.
What Is Delivery Confirmation?¶
Delivery confirmation allows a publisher to verify that RabbitMQ acknowledged a published message.
Should I Always Enable Delivery Confirmation?¶
Not necessarily.
Enable it when:
- message loss is unacceptable;
- publish reliability is critical;
- broker acknowledgement must be observed.
For high-throughput scenarios, evaluate the performance impact before enabling confirmations everywhere.
Why Am I Not Receiving Publisher Confirmations?¶
Verify:
- delivery confirmation is enabled;
- channel events are enabled if required;
- the connection remains active;
- the broker is reachable.
See:
Troubleshooting / Delivery Confirmation Issues