Exemple #1
0
        private async Task SucceedsAfterFirstCircuitBreakAsync(Policy breakCircuitAfterTwoFailuresPolicy)
        {
            Console.WriteLine("----------- Succeeds after first circuit break-----------");
            var service = new FailForSomeTimeStuffService(TimeSpan.FromSeconds(1));

            for (var i = 0; i < 7; ++i)
            {
                try
                {
                    await breakCircuitAfterTwoFailuresPolicy.ExecuteAsync(async() =>
                    {
                        await ThrowBoomerangAsync(service);
                    });
                }
                catch (BrokenCircuitException)
                {
                    Console.WriteLine("Broken circuit exception, must wait until circuit is closed again.");
                    await Task.Delay(1000);
                }
                catch (BoomerangThrowFailedException)
                {
                    Console.WriteLine("Failed an execution.");
                }
            }
        }
 protected async Task SucceedAfterWaitingThreeTimesRetryAsync(Policy retryAndWaitPolicy)
 {
     Console.WriteLine("----------- Succeeds after waiting three times-----------");
     var service = new FailForSomeTimeStuffService(TimeSpan.FromSeconds(8));
     await retryAndWaitPolicy.ExecuteAsync(async() =>
     {
         await ThrowBoomerangAsync(service);
     });
 }
        protected async Task FailAfterAllWaitsAsync(Policy retryAndWaitPolicy)
        {
            Console.WriteLine("----------- Fails after all waits -----------");
            var service = new FailForSomeTimeStuffService(TimeSpan.FromSeconds(10));

            try
            {
                await retryAndWaitPolicy.ExecuteAsync(async() =>
                {
                    await ThrowBoomerangAsync(service);
                });
            }
            catch (BoomerangThrowFailedException)
            {
                Console.WriteLine("-> Failed more times than specified waits.");
            }
        }