module Mumukit::Nuntius::EventConsumer

Public Class Methods

handle(&block) click to toggle source
# File lib/mumukit/nuntius/event_consumer.rb, line 31
def handle(&block)
  register_handlers! Builder.new.tap { |it| it.instance_eval(&block) }.build
end
handle_event!(properties, body) click to toggle source
# File lib/mumukit/nuntius/event_consumer.rb, line 54
def handle_event!(properties, body)
  return if body[:data][:sender] == Mumukit::Nuntius.config.app_name
  event = properties[:type]
  if handles? event
    @@handlers[event].call body[:data].except(:sender)
  else
    log_unknown_event event
  end
rescue => e
  log_exception(event, e, body[:data])
end
handled_events() click to toggle source
# File lib/mumukit/nuntius/event_consumer.rb, line 35
def handled_events
  @@handlers.keys
end
handles?(event) click to toggle source
# File lib/mumukit/nuntius/event_consumer.rb, line 50
def handles?(event)
  @@handlers.include? event
end
log_exception(event, e, body) click to toggle source
# File lib/mumukit/nuntius/event_consumer.rb, line 70
def log_exception(event, e, body)
  Mumukit::Nuntius::Logger.error "Failed to proccess #{event}, error was: #{e}, body was: #{body}"
end
log_unknown_event(event) click to toggle source
# File lib/mumukit/nuntius/event_consumer.rb, line 66
def log_unknown_event(event)
  Mumukit::Nuntius::Logger.info "Unhandled event: #{event} does not exists."
end
register_handlers!(handlers) click to toggle source
# File lib/mumukit/nuntius/event_consumer.rb, line 39
def register_handlers!(handlers)
  @@handlers = handlers
end
start!() click to toggle source
# File lib/mumukit/nuntius/event_consumer.rb, line 43
def start!
  queue_name = "#{Mumukit::Nuntius.config.app_name}-events"
  Mumukit::Nuntius::Consumer.start queue_name, 'events' do |_delivery_info, properties, body|
    handle_event!(properties, body)
  end
end