예제 #1
0
        public async Task Execute(IJobExecutionContext context)
        {
            var         day     = new Random().Next(1, 365 * 10);
            RestRequest request = new RestRequest($"clima/{day}", Method.GET);

            CircuitBreaker.Net.CircuitBreaker circuitBreaker = new CircuitBreaker.Net.CircuitBreaker(
                TaskScheduler.Default,
                3,
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(10000));

            try
            {
                await Client.ExecuteGetTaskAsync(request);
            }
            catch (CircuitBreakerOpenException)
            {
            }
            catch (CircuitBreakerTimeoutException)
            {
            }
            catch (Exception)
            {
            }
        }
예제 #2
0
 public RedisStorage(IDatabase db)
 {
     _db             = db;
     _circuitBreaker = new CircuitBreaker.Net.CircuitBreaker(
         TaskScheduler.Default,
         maxFailures: MAX_FAILURES,
         invocationTimeout: TimeSpan.FromMilliseconds(INVOCATION_TIMEOUT),
         circuitResetTimeout: TimeSpan.FromMilliseconds(CIRCUIT_RESET_TIMEOUT)
         );
 }
예제 #3
0
        public async Task Execute(Object source, EventArgs e)
        {
            var CircuitBreaker = new CircuitBreaker.Net.CircuitBreaker(
                TaskScheduler.Default,
                maxFailures: 2,
                invocationTimeout: TimeSpan.FromMilliseconds(_breaker_invoc_timeout),
                circuitResetTimeout: TimeSpan.FromMilliseconds(_breaker_reset_timeout)
                );

            try
            {
                await CircuitBreaker.ExecuteAsync(new Func <Task>(async() => await sendAsync(source, e)));
            }
            catch (CircuitBreakerOpenException)
            {
                if (_debug_mode.Equals(true))
                {
                    Debug.WriteLine("E-DNA Exception: ");
                    Debug.Indent();
                    Debug.WriteLine("CircuitBreakerOpenException");
                    Debug.Unindent();
                    Debug.Flush();
                }
            }
            catch (CircuitBreakerTimeoutException)
            {
                if (_debug_mode.Equals(true))
                {
                    Debug.WriteLine("E-DNA Exception: ");
                    Debug.Indent();
                    Debug.WriteLine("CircuitBreakerTimeoutException");
                    Debug.Unindent();
                    Debug.Flush();
                }
            }
            catch (Exception)
            {
                if (_debug_mode.Equals(true))
                {
                    Debug.WriteLine("E-DNA Exception: ");
                    Debug.Indent();
                    Debug.WriteLine("Exception");
                    Debug.Unindent();
                    Debug.Flush();
                }
            }
        }
예제 #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Program hola = new Program();

            var circuitBreaker = new CircuitBreaker.Net.CircuitBreaker(
                TaskScheduler.Default,
                maxFailures: 2,
                invocationTimeout: TimeSpan.FromMilliseconds(4000),
                circuitResetTimeout: TimeSpan.FromMilliseconds(10000));

            try
            {
                // perform a potentially fragile call through the circuit breaker
                circuitBreaker.Execute(hola.hola);
                // or its async version
                // await circuitBreaker.ExecuteAsync(externalService.CallAsync);
            }
            catch (CircuitBreakerOpenException)
            {
                Console.WriteLine("Hello Open!");
            }
            catch (CircuitBreakerTimeoutException)
            {
                Console.WriteLine("Tiempo Out!");
            }
            catch (Exception)
            {
                Console.WriteLine("Hello World!");
            }

            try
            {
                // perform a potentially fragile call through the circuit breaker
                circuitBreaker.Execute(hola.hola);
                // or its async version
                // await circuitBreaker.ExecuteAsync(externalService.CallAsync);
            }
            catch (CircuitBreakerOpenException)
            {
                Console.WriteLine("Hello Open!");
            }
            catch (CircuitBreakerTimeoutException)
            {
                Console.WriteLine("Tiempo Out!");
            }
            catch (Exception)
            {
                Console.WriteLine("Hello World!");
            }
            try
            {
                // perform a potentially fragile call through the circuit breaker
                circuitBreaker.Execute(hola.hola);
                // or its async version
                // await circuitBreaker.ExecuteAsync(externalService.CallAsync);
            }
            catch (CircuitBreakerOpenException)
            {
                Console.WriteLine("Hello Open!");
            }
            catch (CircuitBreakerTimeoutException)
            {
                Console.WriteLine("Tiempo Out!");
            }
            catch (Exception)
            {
                Console.WriteLine("Hello World!");
            }
        }