Sha256: 4e7627309728fc1c2644c9d80754d08f90de32ba49c5c47e6cda18de2d0b71e2
Contents?: true
Size: 1.12 KB
Versions: 3
Compression:
Stored size: 1.12 KB
Contents
module Pwwka module ErrorHandlers # Given a chain of error handlers, calls them until either # one returns false/aborts or we exhaust the chain of handlers class Chain include Pwwka::Logging def initialize(default_handler_chain=[]) @error_handlers = default_handler_chain end def handle_error(message_handler_klass,receiver,queue_name,payload,delivery_info,exception) if message_handler_klass.respond_to?(:error_handler) @error_handlers.unshift(message_handler_klass.send(:error_handler)) end @error_handlers.reduce(true) { |keep_going,error_handler| if keep_going keep_going = error_handler.new.handle_error(receiver,queue_name,payload,delivery_info,exception) unless keep_going logf "%{error_handler_class} has halted to error-handling chain", error_handler_class: error_handler.class end else logf "Skipping %{error_handler_class} as we were asked to abort previously", error_handler_class: error_handler.class end keep_going } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
pwwka-0.13.0 | lib/pwwka/error_handlers/chain.rb |
pwwka-0.13.0.RC2 | lib/pwwka/error_handlers/chain.rb |
pwwka-0.13.0.RC1 | lib/pwwka/error_handlers/chain.rb |