class Eventboss::Runner
Public Class Methods
launch()
click to toggle source
# File lib/eventboss/runner.rb, line 8 def launch queues = Eventboss::QueueListener.select( include: Eventboss.configuration.listeners[:include], exclude: Eventboss.configuration.listeners[:exclude] ) client = Eventboss.configuration.sqs_client config = Eventboss.configuration Eventboss::Instrumentation.add(queues) launcher = Launcher.new(queues, client, worker_count: config.concurrency) self_read = setup_signals([:SIGTERM]) logger.info('Active listeners:') queues.each { |queue, listener| logger.info("#{queue}: #{listener}") } Eventboss::DevelopmentMode.setup_infrastructure(queues) if config.development_mode? begin launcher.start handle_signals(self_read, launcher) rescue Interrupt launcher.stop exit 0 end end
Private Class Methods
handle_signals(self_read, launcher)
click to toggle source
# File lib/eventboss/runner.rb, line 50 def handle_signals(self_read, launcher) while readable_io = IO.select([self_read]) signal = readable_io.first[0].gets.strip logger.info('runner') { "Received #{signal} signal, gracefully shutting down..." } launcher.stop exit 0 end end
setup_signals(signals)
click to toggle source
# File lib/eventboss/runner.rb, line 38 def setup_signals(signals) self_read, self_write = IO.pipe signals.each do |signal| trap signal do self_write.puts signal end end self_read end