Refactored internal ResiliencePolicy base class and ResiliencePolicyFactory

This commit is contained in:
Cesar De la Torre 2017-04-04 13:19:22 -07:00
parent 46fd872fe8
commit c0c0941c4c
7 changed files with 13 additions and 13 deletions

View File

@ -4,7 +4,7 @@ using System.Text;
namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience.Policies namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience.Policies
{ {
internal class CircuitBreakerPolicy : ResilientPolicy internal class CircuitBreakerPolicy : ResiliencePolicy
{ {
public CircuitBreakerPolicy(int exceptionsAllowedBeforeBreaking, int durationOfBreakInMinutes) public CircuitBreakerPolicy(int exceptionsAllowedBeforeBreaking, int durationOfBreakInMinutes)
{ {

View File

@ -4,7 +4,7 @@ using System.Text;
namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience.Policies namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience.Policies
{ {
internal class RetryPolicy : ResilientPolicy internal class RetryPolicy : ResiliencePolicy
{ {
public RetryPolicy(int retries, int backoffSeconds, bool exponentialBackoff) public RetryPolicy(int retries, int backoffSeconds, bool exponentialBackoff)
{ {

View File

@ -4,7 +4,7 @@ using System.Text;
namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience
{ {
public class ResilientPolicy public class ResiliencePolicy
{ {
} }
} }

View File

@ -5,14 +5,14 @@ using System.Text;
namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience
{ {
public static class ResilientPolicyFactory public static class ResiliencePolicyFactory
{ {
public static ResilientPolicy CreateRetryPolicy(int retries, int backoffSeconds, bool exponentialBackoff) public static ResiliencePolicy CreateRetryPolicy(int retries, int backoffSeconds, bool exponentialBackoff)
{ {
return new RetryPolicy(retries, backoffSeconds, exponentialBackoff); return new RetryPolicy(retries, backoffSeconds, exponentialBackoff);
} }
public static ResilientPolicy CreateCiscuitBreakerPolicy(int exceptionsAllowedBeforeBreaking, int durationOfBreakInMinutes) public static ResiliencePolicy CreateCiscuitBreakerPolicy(int exceptionsAllowedBeforeBreaking, int durationOfBreakInMinutes)
{ {
return new CircuitBreakerPolicy(exceptionsAllowedBeforeBreaking, durationOfBreakInMinutes); return new CircuitBreakerPolicy(exceptionsAllowedBeforeBreaking, durationOfBreakInMinutes);
} }

View File

@ -32,7 +32,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience
_policyWrapper = Policy.WrapAsync(policies.ToArray()); _policyWrapper = Policy.WrapAsync(policies.ToArray());
} }
public ResilientHttpClient(List<ResilientPolicy> policies, ILogger<ResilientHttpClient> logger) public ResilientHttpClient(List<ResiliencePolicy> policies, ILogger<ResilientHttpClient> logger)
{ {
_client = new HttpClient(); _client = new HttpClient();
_logger = logger; _logger = logger;
@ -41,7 +41,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.Resilience.HttpResilience
_policyWrapper = Policy.WrapAsync(GeneratePolicies(policies)); _policyWrapper = Policy.WrapAsync(GeneratePolicies(policies));
} }
private Policy[] GeneratePolicies(IList<ResilientPolicy> policies) private Policy[] GeneratePolicies(IList<ResiliencePolicy> policies)
{ {
var pollyPolicies = new List<Policy>(); var pollyPolicies = new List<Policy>();

View File

@ -58,13 +58,13 @@ namespace Microsoft.eShopOnContainers.WebMVC
services.AddTransient<IBasketService, BasketService>(); services.AddTransient<IBasketService, BasketService>();
services.AddTransient<IIdentityParser<ApplicationUser>, IdentityParser>(); services.AddTransient<IIdentityParser<ApplicationUser>, IdentityParser>();
if (Configuration.GetValue<string>("ActivateCircuitBreaker") == bool.TrueString) if (Configuration.GetValue<string>("UseResilientHttp") == bool.TrueString)
{ {
services.AddSingleton( services.AddSingleton(
new List<ResilientPolicy> new List<ResiliencePolicy>
{ {
ResilientPolicyFactory.CreateRetryPolicy(6, 2, true), ResiliencePolicyFactory.CreateRetryPolicy(6, 2, true),
ResilientPolicyFactory.CreateCiscuitBreakerPolicy(5, 1) ResiliencePolicyFactory.CreateCiscuitBreakerPolicy(5, 1)
}); });
services.AddTransient<IHttpClient, ResilientHttpClient>(); services.AddTransient<IHttpClient, ResilientHttpClient>();
} }

View File

@ -4,7 +4,7 @@
"BasketUrl": "http://localhost:5103", "BasketUrl": "http://localhost:5103",
"IdentityUrl": "http://localhost:5105", "IdentityUrl": "http://localhost:5105",
"CallBackUrl": "http://localhost:5100/", "CallBackUrl": "http://localhost:5100/",
"ActivateCircuitBreaker": "True", "UseResilientHttp": "True",
"Logging": { "Logging": {
"IncludeScopes": false, "IncludeScopes": false,
"LogLevel": { "LogLevel": {