module TreadMill

Constants

VERSION

Public Class Methods

configured?() click to toggle source

Check to see if we're properly configured to send messages. Unfortunately, sneakers/bunny doesn't have a real method check because the connections are setup at request time. This is really just a best guess.

# File lib/tread_mill.rb, line 19
def self.configured?
  Sneakers.configured? &&
    !Sneakers::Config[:amqp]
      .match(/^amqps?:\/\/([^:]+(:[^@]+)?@)?[^:]+(:[0-9]+)?\/?$/).nil?
end
process_queues(queues) click to toggle source

Process input queues to ensure QueueListener#for_queues gets the proper input.

# File lib/tread_mill.rb, line 27
def self.process_queues(queues)
  case queues
  when Array
    queues.flatten
  when String
    queues.split(',')
  else
    fail ArgumentError, 'TreadMill#run_queues must be passed an Array of '\
      'queues or comma separated list of queues.'
  end
end
run_queues(ques = nil, options = {}) click to toggle source

Setup QueueListeners for each queue and run them in a Sneakers::Runner. Take the passed in queues first if provided, then use any application configured queues.

# File lib/tread_mill.rb, line 44
def self.run_queues(ques = nil, options = {})
  ques = self.process_queues(ques) if ques
  queue_listeners = QueueListener.for_queues(ques || queues)

  sneakers_config = {
    before_fork: ForkCallbacks.method(:before_fork),
    after_fork: ForkCallbacks.method(:after_fork)
  }

  # Let these primarily reside in the sneakers config unless explicitly set.
  sneakers_config[:workers] = workers if workers

  Sneakers.configure(sneakers_config.merge(options))

  self.runner = Sneakers::Runner.new(queue_listeners)
  self.runner.run
end
stop_queues() click to toggle source

If a runner is running, stop it.

# File lib/tread_mill.rb, line 63
def self.stop_queues
  self.runner.stop unless self.runner.nil?
end