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