Incendium.RetryPolicy
1.0.2
dotnet add package Incendium.RetryPolicy --version 1.0.2
NuGet\Install-Package Incendium.RetryPolicy -Version 1.0.2
<PackageReference Include="Incendium.RetryPolicy" Version="1.0.2" />
paket add Incendium.RetryPolicy --version 1.0.2
#r "nuget: Incendium.RetryPolicy, 1.0.2"
// Install Incendium.RetryPolicy as a Cake Addin #addin nuget:?package=Incendium.RetryPolicy&version=1.0.2 // Install Incendium.RetryPolicy as a Cake Tool #tool nuget:?package=Incendium.RetryPolicy&version=1.0.2
Incendium.RetryPolicy
Incendium.RetryPolicy is a small .NET standard 2.1 library that provides a RetryHttpClientHandler
type to easily retry HTTP requests in case of errors, as well as a RateGate
to manage rate limiting.
Getting started
Installation
PM> Install-Package Incendium.RetryPolicy
RetryHttpClientHandler
Сan be used as a handler for HttpClient
and allows you to easily set up repeated requests with constant or exponential delays in the following cases:
HttpNetworkException
- Server errors (
5xx
) - Request timeout error (
408
) - Too many requests (
429
)
and also allows you to configure rate limiting using RateGate
:
var innerHttpClientHandler = new HttpClientHandler(); // can be easily mocked
var retryHttpClientHandler = new RetryHttpClientHandler(innerHttpClientHandler)
{
RetryCount = 5, // sets 5 retry attempts
RetryOnHttpRequestException = true, // sets the retry flag in case of an HttpRequestException
FirstRetryDelay = TimeSpan.FromMilliseconds(100), // sets the median starting delay between requests
RateGate = new RateGate(
occurrences: 10, // sets rate limit to 10 request per 60 seconds
timeUnit: TimeSpan.FromSeconds(60))
}
var httpClient = new HttpClient(retryHttpClientHandler);
There are several ready-made delay algorithms that can be used:
- Constant
- Exponential
- DecorrelatedJitterBackoffV2 (default)
var retryHttpClientHandler = new RetryHttpClientHandler(innerHttpClientHandler)
{
RetryDelaysFactory = () => Delays.Exponential(
firstDelay: TimeSpan.FromMilliseconds(100),
count: 10)
}
You can also pass your own delay algorithm in the RetryDelaysFactory
property, which should return IEnumerable<TimeSpan>
.
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 was computed. 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. |
.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.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Incendium.RetryPolicy:
Package | Downloads |
---|---|
Revelium.Evm
Revelium.Evm is .NET integration library for Etherlink and EVM-compatible networks |
GitHub repositories
This package is not used by any popular GitHub repositories.