// GET api/values/5
        public string Get(int id)
        {
            CircuitBreakerPolicy policy = Policy
                                          .Handle <TimeoutException>()
                                          .CircuitBreaker(2, TimeSpan.FromSeconds(10), (exception, timeSpan) => {
            }, () => {
            });

            PolicyResult <IEnumerable <Stuff> > result = policy.ExecuteAndCapture(() => _valueProvider.GetStuff());

            if (result.Outcome == OutcomeType.Failure)
            {
                return("it broke");
            }

            return(string.Join(",", result.Result.Select(x => x.AboutTheStuff)));
        }
示例#2
0
 public void TriggerSuccess() => _circuitBreaker.ExecuteAndCapture(() => { });
 /// <summary>
 /// 同步执行并返回结果
 /// </summary>
 /// <param name="action">要执行的业务逻辑</param>
 /// <returns></returns>
 public PolicyResult ExecuteAndCapture(Action action)
 {
     return(_circuitBreaker.ExecuteAndCapture(action));
 }