Ejemplo n.º 1
0
        public static void MakeRequest(HttpClient client, HttpCircuitBreaker circuitBreaker)
        {
            Console.Write("Making request...");
            var currentState = circuitBreaker.CurrentState;
            var task         = circuitBreaker.Execute(() => client.GetAsync("http://www.dummy.com/"));

            try
            {
                task.Wait();
            }
            catch (Exception)
            {
                Console.WriteLine("Failure - Exception");
            }

            if (task.Result == null)
            {
                Console.WriteLine("Short circuited");
            }
            else if (!task.Result.IsSuccessStatusCode)
            {
                Console.WriteLine("Failure - StatusCode");
            }
            else
            {
                Console.WriteLine("Success!");
            }

            if (currentState != circuitBreaker.CurrentState)
            {
                Console.WriteLine("--- Changing circuit breaker state to: " + circuitBreaker.CurrentState + " ---");
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var handler        = new HttpClientTestingHandler();
            var client         = new HttpClient(handler);
            var circuitBreaker = new HttpCircuitBreaker(2, 3);

            Console.WriteLine(".: Making Requests With Internal Server Error :.\n");
            handler.FailWith(HttpStatusCode.InternalServerError);
            for (int i = 0; i < 6; i++)
            {
                RequestHelper.MakeRequest(client, circuitBreaker);
            }

            Console.WriteLine("\n\n.: Making Requests Without Errors :. \n");
            handler.Succeed();
            for (int i = 0; i < 5; i++)
            {
                RequestHelper.MakeRequest(client, circuitBreaker);
            }

            Console.Write("\nDone!");
            Console.ReadKey();
        }