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