From 1f916ccb587895fcbba17a9834aeec0c8b72a7ba Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Thu, 17 Sep 2020 18:08:25 -0500 Subject: [PATCH] =?UTF-8?q?feat(api-clients):=20=E2=9C=A8=20add=20retry=20?= =?UTF-8?q?to=20IDirectoryClient=20transient=20errors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ConfigurationExtensions.cs | 9 +++++++-- .../FilterLists.SharedKernel.Apis.Clients.csproj | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs index c402a5015..574610dec 100644 --- a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs +++ b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs @@ -2,6 +2,7 @@ using FilterLists.SharedKernel.Apis.Clients.Options; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Polly; using Refit; namespace FilterLists.SharedKernel.Apis.Clients @@ -10,14 +11,18 @@ public static class ConfigurationExtensions { public static void AddApiClients(this IServiceCollection services, IConfiguration configuration) { - // TODO: add Polly for resiliency // TODO: use SystemTextJsonContentSerializer() once less feature-limited services.AddRefitClient() .ConfigureHttpClient(c => { var host = configuration.GetSection(ApiOptions.Key).Get().DirectoryHost; c.BaseAddress = new UriBuilder("http", host).Uri; - }); + }) + .AddTransientHttpErrorPolicy(b => + b.WaitAndRetryAsync(new[] + { + TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(10) + })); } } } diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj index f959b1574..f421b1738 100644 --- a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj +++ b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj @@ -21,6 +21,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive +