in src/Services/Infection/Infection.FnApp/Services/RetryHandler.cs [37:79]
public static async Task<bool> RetryMessageAsync(
Message message,
Exception exception,
MessageReceiver messageReceiver,
RetryPolicyOptions policyOptions,
ILogger logger)
{
logger.LogInformation($"Calling retry handler... DeliveryCount: {message.SystemProperties.DeliveryCount}");
RetryPolicyOptions policy = policyOptions;
if (exception is ApplicationException)
{
// Business errors policy
// Move message to dead letter queue
await messageReceiver.DeadLetterAsync(
message.SystemProperties.LockToken,
"Application error",
exception.Message);
logger.LogInformation("RetryHandler: Application error. Message moved to dead letter queue.");
return true;
}
// Check message delivery count against policy
if (message.SystemProperties.DeliveryCount >= policy?.MaxRetryCount)
{
// Move message to dead letter queue
await messageReceiver.DeadLetterAsync(
message.SystemProperties.LockToken,
"Exceeded max retry policy",
exception.Message);
logger.LogInformation(
$"RetryHandler: Max delivery attempts {message.SystemProperties.DeliveryCount} exceeded. Message moved to dead letter queue");
return true;
}
return false;
}