Beispiel #1
0
        public async Task Failure()
        {
            var fatorySettings = new TimeoutRetryPolicySettings {
                PerRetryTimeout = "00:00:20", TotalTimeout = "00:01:00"
            };
            var factory = new TimeoutRetryPolicyFactory(fatorySettings);
            var policy  = factory.Create();

            Func <Task> executeAction = async() => await policy.ExecuteAsync(async() =>
            {
                Trace.TraceInformation("Sending...");
                var badUrl  = "http://10.51.11.50:15672/";
                var request = WebRequest.Create(badUrl);
                try
                {
                    await request.GetResponseAsync();
                }
                catch (Exception e)
                {
                    request.Abort();
                    throw;
                }
            });

            executeAction.Should().Throw <Exception>();
        }
        public TimeoutRetryPolicyFactory(TimeoutRetryPolicySettings policySettings)
        {
            RetryCount = policySettings.RetryCount ?? 5;

            PerRetryTimeout = TimeSpan.TryParse(policySettings.PerRetryTimeout, out var perRetryTimeout)
                ? perRetryTimeout
                : TimeSpan.FromSeconds(5);

            RetryWaitTime = TimeSpan.TryParse(policySettings.RetryWaitTime, out var retryWaitTime)
                ? retryWaitTime
                : TimeSpan.FromSeconds(2);

            TotalTimeout = TimeSpan.TryParse(policySettings.TotalTimeout, out var totalTimeout)
                ? totalTimeout
                : TimeSpan.FromSeconds(10);
        }