Xm3.Http.Resilience
1.0.0-rc.1
Prefix Reserved
dotnet add package Xm3.Http.Resilience --version 1.0.0-rc.1
NuGet\Install-Package Xm3.Http.Resilience -Version 1.0.0-rc.1
<PackageReference Include="Xm3.Http.Resilience" Version="1.0.0-rc.1" />
<PackageVersion Include="Xm3.Http.Resilience" Version="1.0.0-rc.1" />
<PackageReference Include="Xm3.Http.Resilience" />
paket add Xm3.Http.Resilience --version 1.0.0-rc.1
#r "nuget: Xm3.Http.Resilience, 1.0.0-rc.1"
#:package Xm3.Http.Resilience@1.0.0-rc.1
#addin nuget:?package=Xm3.Http.Resilience&version=1.0.0-rc.1&prerelease
#tool nuget:?package=Xm3.Http.Resilience&version=1.0.0-rc.1&prerelease
Xm3.Http.Resilience
A configurable Polly v8 resilience pipeline (jittered exponential retry + per-attempt timeout)
for HttpClient, designed to pair with Xm3.Http
but usable with any IHttpClientFactory registration. Targets net8.0 and net10.0.
Usage
Attach the handler to any IHttpClientBuilder — typed or named clients. Each registration gets
its own independent pipeline and settings:
using Xm3.Http.Resilience;
services.AddHttpClient("orders-api", client =>
client.BaseAddress = new Uri("https://orders.example.com"))
.AddXm3HttpResilienceHandler(configure: o => o.RetryCount = 2);
Each client can also bind its own configuration section — pass the section path after the configuration:
services.AddHttpClient("orders-api")
.AddXm3HttpResilienceHandler(configuration, "Resilience:OrdersApi");
A configure callback passed alongside runs after binding, so explicit values in code win. If
your app already holds a bound Xm3HttpResilienceOptions (nested in its own options class, for
example), pass the instance directly: .AddXm3HttpResilienceHandler(myOptions.Resilience).
Options: PerTryTimeoutSeconds, RetryCount, RetryBaseDelaySeconds, BackoffType,
UseJitter. The defaults are 10s per-try timeout, 5 retries, 1s base delay, exponential backoff
with jitter — retries handle transient exceptions, HTTP 408, and 5xx responses.
For anything beyond the options, two escape hatches:
services.AddHttpClient("orders-api")
.AddXm3HttpResilienceHandler(
configureShouldHandle: predicate =>
predicate.HandleResult(r => r.StatusCode == HttpStatusCode.TooManyRequests),
configurePipeline: builder =>
builder.AddTimeout(TimeSpan.FromSeconds(30)));
configureShouldHandle adds retry conditions on top of the defaults; configurePipeline adds
any other Polly stage — circuit breaker, hedging, rate limiter.
Without IHttpClientFactory, AddXm3HttpResilience(configuration) registers a single pipeline,
binding options from the Xm3HttpResilience configuration section.
Documentation
Full documentation: github.com/xm3tech/Xm3.Http.
Questions and bug reports are welcome — open an issue. Licensed MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 is compatible. 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. |
-
net10.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.9)
- Microsoft.Extensions.Http (>= 10.0.9)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.9)
- Polly.Core (>= 8.7.0)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
- Polly.Core (>= 8.7.0)
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 |
|---|---|---|
| 1.0.0-rc.1 | 110 | 7/10/2026 |