AotResilience 1.0.0
dotnet add package AotResilience --version 1.0.0
NuGet\Install-Package AotResilience -Version 1.0.0
<PackageReference Include="AotResilience" Version="1.0.0" />
<PackageVersion Include="AotResilience" Version="1.0.0" />
<PackageReference Include="AotResilience" />
paket add AotResilience --version 1.0.0
#r "nuget: AotResilience, 1.0.0"
#:package AotResilience@1.0.0
#addin nuget:?package=AotResilience&version=1.0.0
#tool nuget:?package=AotResilience&version=1.0.0
AotResilience
Simple resilience compatible with AOT compilation
Very simple retry implementation.
This is not a full featured Library like Polly by design.
But it is compatible with AOT compilation and legacy projects.
There is an official way to do resilience in .NET wich may be suitable to most new projects.
But this is not compatible with legacy projects.
Example
var resilience = new Resilience(5);
var client = new HttpClient();
resilience.ExceptionAction = (i,ex) => Console.WriteLine($"{i}: {ex.Message}");
var result = await resilience.TryHard(async () => await client.GetStringAsync("https://httpbin.io/unstable"));
Timeout and cancellation
CancellationToken is supported and can be used to set a time limit.
But it will not terminate a running Task, just prevent a new try.
using var cts = new CancellationTokenSource();
cts.CancelAfter(10000);
var resilience = new Resilience(-1, ct: cts.Token);
var result = await resilience.TryHard(async () =>
{
await Task.Delay(500);
var rng = Random.Shared.Next(0, 100);
if (rng > 1) throw new Exception($"{rng}");
return rng;
});
Why
The deprecation of Microsoft.Extensions.Http.Polly is giving me left-pad vibes so I'm doing my own thing that fits my cases exactly.
With the age of the cloud came the age of unrealiable services, and I dont want to contribute to the cascading failure.
Also the similarity with a perk in DBD is a coincidence and I'm not calling anyone a tryhard.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|