class Sidekiq::EventBus::Consumer
Constants
- PAYLOAD_WITH_INDIFFERENT_ACCESS
Public Class Methods
handlers()
click to toggle source
Store handlers for this consumer
# File lib/sidekiq/event_bus/consumer.rb, line 7 def self.handlers @handlers ||= Hash.new { |hash, key| hash[key] = Array.new } end
on(event, handler=nil, &block)
click to toggle source
Register a handler for a particular event
# File lib/sidekiq/event_bus/consumer.rb, line 13 def self.on event, handler=nil, &block if handler handlers[event] << handler else handlers[event] << block end end
register_consumer!()
click to toggle source
# File lib/sidekiq/event_bus/consumer.rb, line 2 def self.register_consumer! Sidekiq::EventBus.config.register_consumer(self) end
Public Instance Methods
consume(event, payload)
click to toggle source
# File lib/sidekiq/event_bus/consumer.rb, line 23 def consume event, payload if self.class.handlers.key? event _payload = payload.merge('event'.freeze => event).freeze if PAYLOAD_WITH_INDIFFERENT_ACCESS _payload = ActiveSupport::HashWithIndifferentAccess.new(_payload) end self.class.handlers[event].each do |handler| begin if handler.is_a? Proc instance_exec( _payload.dup, &handler ) else handler.call( _payload.dup ) end rescue => e Sidekiq::EventBus.utils.handle_error(e) end end end end