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