/Setting the policy
var bulkHeadPolicy = Policy.BulkheadAsync < HttpResponseMessage > (10, 1);
//Defining it in Startup.cs
services
.AddHttpClient < IContentfulManagementService, ContentfulManagementService > ((s, c) => {
c.BaseAddress = new Uri(managementApiURL);
c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", managementApiKey);
c.Timeout = timeout;
})
.AddTransientHttpErrorPolicy(ErrorPolicy) .AddPolicyHandler(timeoutPolicy).AddTransientHttpErrorPolicy(retryErrorPolicy).AddPolicyHandler(bulkHeadPolicy);
//Retry when it errors out
private static Func < PolicyBuilder < HttpResponseMessage > , IAsyncPolicy < HttpResponseMessage >> retryErrorPolicy =>
p => p.Or < BulkheadRejectedException > ().WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));
/Setting the policy
var bulkHeadPolicy = Policy.BulkheadAsync < HttpResponseMessage > (10, 1);
//Defining it in Startup.cs
services
.AddHttpClient < IContentfulManagementService, ContentfulManagementService > ((s, c) => {
c.BaseAddress = new Uri(managementApiURL);
c.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", managementApiKey);
c.Timeout = timeout;
})
.AddTransientHttpErrorPolicy(ErrorPolicy) .AddPolicyHandler(timeoutPolicy).AddTransientHttpErrorPolicy(retryErrorPolicy).AddPolicyHandler(bulkHeadPolicy);
//Retry when it errors out
private static Func < PolicyBuilder < HttpResponseMessage > , IAsyncPolicy < HttpResponseMessage >> retryErrorPolicy =>
p => p.Or < BulkheadRejectedException > ().WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));