Skip to content

Latest commit

 

History

History
68 lines (48 loc) · 1.96 KB

README.md

File metadata and controls

68 lines (48 loc) · 1.96 KB

Circuit Breaker

Gem Version Gem Downloads build

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.

How it works

Refer the following diagram:

CircuitBreaker

Getting started

Add following line to your Gemfile:

gem 'circuit_breaker-ruby', '~> 0.1.3'

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 tests

bundle exec rake

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.

References

CircuitBreaker - Martin Fowler