class DispatchRider::Subscriber

Attributes

demultiplexer[R]
dispatcher[R]
queue_service_registrar[R]

Public Class Methods

new() click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 6
def initialize
  @queue_service_registrar = DispatchRider::Registrars::QueueService.new
  @dispatcher = DispatchRider::Dispatcher.new
end

Public Instance Methods

process() click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 32
def process
  register_quit_trap
  register_term_trap
  register_int_trap

  demultiplexer.start
end
register_handler(name) click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 16
def register_handler(name)
  dispatcher.register(name)
  self
end
register_handlers(*names) click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 21
def register_handlers(*names)
  names.each {|name| register_handler(name)}
  self
end
register_queue(name, options = {}) click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 11
def register_queue(name, options = {})
  queue_service_registrar.register(name, options)
  self
end
setup_demultiplexer(queue_name, error_handler = DispatchRider::DefaultErrorHandler) click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 26
def setup_demultiplexer(queue_name, error_handler = DispatchRider::DefaultErrorHandler)
  queue = queue_service_registrar.fetch(queue_name)
  @demultiplexer ||= DispatchRider::Demultiplexer.new(queue, dispatcher, error_handler)
  self
end

Private Instance Methods

logger() click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 72
def logger
  DispatchRider.config.logger
end
register_int_trap() click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 58
def register_int_trap
  @already_interrupted = false
  Signal.trap("INT") do
    if @already_interrupted
      logger.info "Received SIGINT second time, aborting"
      exit(0)
    else
      logger.info "Received SIGINT first time, stopping demultiplexer"
      demultiplexer.stop(reason: "Got SIGINT")
    end
    @already_interrupted = true
  end
end
register_quit_trap() click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 42
def register_quit_trap
  Signal.trap("QUIT") do
    # signal number: 3
    logger.info "Received SIGQUIT, stopping demultiplexer"
    demultiplexer.stop(reason: "Got SIGQUIT")
  end
end
register_term_trap() click to toggle source
# File lib/dispatch-rider/subscriber.rb, line 50
def register_term_trap
  Signal.trap("TERM") do
    # signal number: 15
    logger.info "Received SIGTERM, stopping demultiplexer"
    demultiplexer.stop(reason: "Got SIGTERM")
  end
end