示例#1
0
        /// <summary>
        /// Checks the <paramref name="resilience"/> to determine which resilience
        /// policies are enabled and adds to the <paramref name="httpClientBuilder" />
        /// as appropriate.
        /// </summary>
        /// <param name="httpClientBuilder">The <see cref="IHttpClientBuilder"/> to add the policy to.</param>
        /// <param name="resilience">The <see cref="Resilience"/> instance with the settings for the service.</param>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="httpClientBuilder"/> or <paramref name="resilience"/> are null.</exception>
        public virtual void AddResiliencePolicy(IHttpClientBuilder httpClientBuilder, Resilience resilience)
        {
            httpClientBuilder.IsNull("httpClientBuilder");
            resilience.IsNull("resilience");

            // Check if retry is enabled for the service
            if (resilience.EnableRetry)
            {
                httpClientBuilder.AddPolicyHandlerFromRegistry(ResiliencePolicy.DefaultRetry);
            }

            // Check if circuit breaking is enabled for the service
            if (resilience.EnableCircuitBreaking)
            {
                httpClientBuilder.AddPolicyHandlerFromRegistry(ResiliencePolicy.DefaultCircuitbreaker);
            }
        }