Exemplo n.º 1
0
        public LandmarkApiClient(HttpClient policyHttpClient, LandmarkApiConfig apiConfig, IAuditEventRepository auditEventRepository)
        {
            _policyHttpClient      = policyHttpClient;
            _instanceConfiguration = apiConfig.DefaultInstance;
            _auditEventRepository  = auditEventRepository;

            _serviceUri = new Uri(_instanceConfiguration.BaseUri, ServiceRestEndpointAddress);
        }
Exemplo n.º 2
0
        public LandmarkHttpPoliciesHolder(LandmarkApiConfig apiConfig, LandmarkHttpPolicyOptions httpPolicyOptions)
        {
            HttpFallbackPolicy = Policy.Handle <HttpRequestException>()
                                 .Or <TimeoutRejectedException>()
                                 .Or <BrokenCircuitException>()
                                 .OrResult(_handledHttpStatusCodes)
                                 .FallbackAsync(fallbackValue: null, onFallbackAsync: OnFallbackAsync);

            HttpCircuitBreakerPolicy = Policy.Handle <HttpRequestException>()
                                       .Or <TimeoutRejectedException>()
                                       .OrResult(_handledHttpStatusCodes)
                                       .CircuitBreakerAsync(1, httpPolicyOptions.CircuitBreakDuration,
                                                            onBreak: (result, duration, context) => context["BlockedTill"] = DateTime.UtcNow.Add(duration),
                                                            onReset: context => context.Remove("BlockedTill"));

            GetRetryPolicyAction = request => RetryPolicyBuilder(request, apiConfig, httpPolicyOptions.MaxAttemptsPerInstance);

            HttpTimeoutPolicy = Policy.TimeoutAsync <HttpResponseMessage>(httpPolicyOptions.TimeoutPerRequest);
        }