Sha256: c6d3cab5b26f8996a4ace9a80036e36919785a906630c2ab05c220af1735dc72
Contents?: true
Size: 854 Bytes
Versions: 2
Compression:
Stored size: 854 Bytes
Contents
require 'switch_gear/circuit_breaker' require 'logger' require 'redis' @logger = Logger.new(STDOUT) handles = ["joe", "jane", "mary", "steve"] def get_tweets(twitter_handle) http_result = ["Success!", "Fail"].sample raise RuntimeError.new("Failed to fetch tweets for #{twitter_handle}") if http_result == "Fail" @logger.info "#{http_result} getting tweets for #{twitter_handle}" end redis = Redis.new breaker = SwitchGear::CircuitBreaker::Redis.new do |cb| cb.circuit = -> (twitter_handle) { get_tweets(twitter_handle) } cb.client = redis cb.namespace = "get_tweets" cb.failure_limit = 2 cb.reset_timeout = 5 end handles.each do |handle| begin breaker.call(handle) rescue SwitchGear::CircuitBreaker::OpenError @logger.warn "Circuit is open - unable to make calls for #{handle}" sleep breaker.reset_timeout end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
switch_gear-0.3.0 | examples/example_redis.rb |
switch_gear-0.2.0 | examples/example_redis.rb |