class ActiveEvent::EventServer

Attributes

options[RW]

Public Class Methods

publish(event) click to toggle source
# File lib/active_event/event_server.rb, line 7
def self.publish(event)
  type = event.class.name
  body = event.to_json
  instance.event_exchange.publish body, type: type, headers: event.store_infos
  LOGGER.debug "Published #{type} with #{body}"
end
start(options) click to toggle source
# File lib/active_event/event_server.rb, line 14
def self.start(options)
  instance.options = options
  instance.start
end

Public Instance Methods

event_channel() click to toggle source
# File lib/active_event/event_server.rb, line 54
def event_channel
  @event_channel ||= event_connection.create_channel
end
event_connection() click to toggle source
# File lib/active_event/event_server.rb, line 50
def event_connection
  @event_server ||= Bunny.new URI::Generic.build(options[:event_connection]).to_s
end
event_exchange() click to toggle source
# File lib/active_event/event_server.rb, line 58
def event_exchange
  @event_exchange ||= event_channel.fanout options[:event_exchange]
end
listen_for_resend_requests() click to toggle source
# File lib/active_event/event_server.rb, line 39
def listen_for_resend_requests
  resend_request_queue.subscribe do |_delivery_info, _properties, id|
    resend_request_received id
  end
end
resend_events_after(id) click to toggle source
# File lib/active_event/event_server.rb, line 28
def resend_events_after(id)
  if @replay_server_thread.nil? || !@replay_server_thread.alive?
    @replay_server_thread = Thread.new do
      Thread.current.priority = -10
      ReplayServer.start options, id
    end
  else
    ReplayServer.update id
  end
end
resend_request_exchange() click to toggle source
# File lib/active_event/event_server.rb, line 62
def resend_request_exchange
  @resend_request_exchange ||= event_channel.direct "resend_request_#{options[:event_exchange]}"
end
resend_request_queue() click to toggle source
# File lib/active_event/event_server.rb, line 66
def resend_request_queue
  @resend_request_queue ||= event_channel.queue('', auto_delete: true).bind(resend_request_exchange, routing_key: 'resend_request')
end
resend_request_received(id) click to toggle source
# File lib/active_event/event_server.rb, line 45
def resend_request_received(id)
  LOGGER.debug "received resend request with id #{id}"
  resend_events_after id.to_i
end
start() click to toggle source
# File lib/active_event/event_server.rb, line 19
def start
  event_connection.start
  listen_for_resend_requests
rescue => e
  LOGGER.error e.message
  LOGGER.error e.backtrace.join("\n")
  raise e
end