Circuit Breaker
A circuit breaker which terminates a connection or block of code from executing when it reaches the failure threshold and a percentage. Also it gets reset when a connection succeeds. It also keeps monitoring if connections are working again by checking if it has attained a time to retry.
Installation
gem install circuit_breaker-ruby
Usage
circuit_breaker = CircuitBreaker::Shield.new(
invocation_timeout: 1,
failure_threshold: 2,
failure_threshold_percentage: 0.2,
retry_timeout: 10
)
circuit_breaker.protect { sleep(10) }
Running the specs
bundle exec rspec spec
Configuration
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
Contributing
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 and License
Copyright (c) 2019, Scripbox.
circuit_breaker-ruby source code is licensed under the MIT License.