Políticas de reintento en C#
Fallo transitorio, te presento a la persistencia declarativa.
using Polly;
using Polly.Retry;
var pipeline = new ResiliencePipelineBuilder()
.AddRetry(new RetryStrategyOptions
{
MaxRetryAttempts = 3,
Delay = TimeSpan.FromMilliseconds(50),
BackoffType = DelayBackoffType.Exponential,
})
.Build();
var attempts = 0;
pipeline.Execute(() =>
{
attempts++;
if (attempts < 3) throw new TimeoutException("flaky");
});
Console.WriteLine($"succeeded on attempt {attempts}");
Cómo funciona
- Un
ResiliencePipelinese construye una vez y se reutiliza. MaxRetryAttempts,Delayy el backoff exponencial son opciones.- El callback inestable triunfa al tercer intento, dentro del presupuesto.
Palabras clave y builtins usados aquí
ifnewthrowusingvar
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 404
- Tokens
- 84
- Ritmo de tres estrellas
- 85 tpm
Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 59 segundos.
Paso 1 de 2 en Resiliencia con Polly; paso 8 de 16 en El ecosistema abierto.