class Shoryuken::Launcher

Public Class Methods

new() click to toggle source
# File lib/shoryuken/launcher.rb, line 5
def initialize
  @managers = create_managers
end

Public Instance Methods

healthy?() click to toggle source
# File lib/shoryuken/launcher.rb, line 42
def healthy?
  Shoryuken.groups.keys.all? do |group|
    manager = @managers.find { |m| m.group == group }
    manager && manager.running?
  end
end
start() click to toggle source
# File lib/shoryuken/launcher.rb, line 9
def start
  logger.info { 'Starting' }

  start_callback
  start_managers
end
stop() click to toggle source
# File lib/shoryuken/launcher.rb, line 28
def stop
  fire_event(:quiet, true)

  initiate_stop

  stop_new_dispatching
  await_dispatching_in_progress

  executor.shutdown
  executor.wait_for_termination

  fire_event(:stopped)
end
stop!() click to toggle source
# File lib/shoryuken/launcher.rb, line 16
def stop!
  initiate_stop

  # Don't await here so the timeout below is not delayed
  stop_new_dispatching

  executor.shutdown
  executor.kill unless executor.wait_for_termination(Shoryuken.options[:timeout])

  fire_event(:stopped)
end

Private Instance Methods

await_dispatching_in_progress() click to toggle source
# File lib/shoryuken/launcher.rb, line 55
def await_dispatching_in_progress
  @managers.each(&:await_dispatching_in_progress)
end
create_managers() click to toggle source
# File lib/shoryuken/launcher.rb, line 93
def create_managers
  Shoryuken.groups.map do |group, options|
    Shoryuken::Manager.new(
      group,
      Shoryuken::Fetcher.new(group),
      Shoryuken.polling_strategy(group).new(options[:queues], Shoryuken.delay(group)),
      options[:concurrency],
      executor
    )
  end
end
executor() click to toggle source
# File lib/shoryuken/launcher.rb, line 59
def executor
  @_executor ||= Shoryuken.launcher_executor || Concurrent.global_io_executor
end
initiate_stop() click to toggle source
# File lib/shoryuken/launcher.rb, line 69
def initiate_stop
  logger.info { 'Shutting down' }

  stop_callback
end
start_callback() click to toggle source
# File lib/shoryuken/launcher.rb, line 75
def start_callback
  if (callback = Shoryuken.start_callback)
    logger.debug { 'Calling start_callback' }
    callback.call
  end

  fire_event(:startup)
end
start_managers() click to toggle source
# File lib/shoryuken/launcher.rb, line 63
def start_managers
  @managers.each do |manager|
    Concurrent::Future.execute { manager.start }
  end
end
stop_callback() click to toggle source
# File lib/shoryuken/launcher.rb, line 84
def stop_callback
  if (callback = Shoryuken.stop_callback)
    logger.debug { 'Calling stop_callback' }
    callback.call
  end

  fire_event(:shutdown, true)
end
stop_new_dispatching() click to toggle source
# File lib/shoryuken/launcher.rb, line 51
def stop_new_dispatching
  @managers.each(&:stop_new_dispatching)
end