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 + " ---"); } }
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(); }