Skip to content

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