A circuit breaker which terminates the connection or block of code from executing when it reaches the timeout. It helps in preventing blocking requests from slowing down your server.
Refer the following diagram:
Add following line to your Gemfile:
gem 'circuit_breaker-ruby', '~> 0.1.3'
circuit_breaker = CircuitBreaker::Shield.new(
invocation_timeout: 1,
failure_threshold: 2,
failure_threshold_percentage: 0.2,
retry_timeout: 10
)
circuit_breaker.protect { sleep(10) }
bundle exec rake
Add the following configuration to config/initializers/circuit_breaker.rb
. These are the default values.
CircuitBreaker.configure do |cb|
cb.failure_threshold = 10
cb.failure_threshold_percentage = 0.5
cb.invocation_timeout = 10
cb.retry_timeout = 60
end
If you have any issues with circuit_breaker-ruby, or feature requests, please add an issue on GitHub or fork the project and send a pull request. Please include passing specs with all pull requests.
Copyright (c) 2019, Scripbox.
circuit_breaker-ruby source code is licensed under the MIT License.