class SimpleJob::Client

Public Class Methods

start(opts = {}, &proc) click to toggle source
# File lib/simplejob/client.rb, line 5
def self.start(opts = {}, &proc)
  instance = new
  instance.start(opts, &proc)
  instance
end

Private Class Methods

log() click to toggle source
# File lib/simplejob/client.rb, line 61
def self.log
  @logger ||= setup_logger
end
setup_logger() click to toggle source
# File lib/simplejob/client.rb, line 65
def self.setup_logger
  if defined?(LOGGER)
    LOGGER
  elsif defined?(Rails.logger)
    Rails.logger
  else
    Logger.new(STDOUT)
  end
end

Public Instance Methods

bind(queue, key) click to toggle source
# File lib/simplejob/client.rb, line 36
def bind(queue, key)
  queue.bind(@exchange, :key => key)
end
exchange(name) click to toggle source
# File lib/simplejob/client.rb, line 28
def exchange(name)
  @channel.topic(name, :durable => true, :auto_delete => false)
end
orig_send(topic, props = {})
Alias for: send
publish(topic, message) click to toggle source
# File lib/simplejob/client.rb, line 40
def publish(topic, message)
  @exchange.publish(message, :routing_key => topic, :persistent => true)
end
queue(name) click to toggle source
# File lib/simplejob/client.rb, line 32
def queue(name)
  @channel.queue(name, :durable => true, :auto_delete => false)
end
send(topic, props = {}) click to toggle source
# File lib/simplejob/client.rb, line 49
def send(topic, props = {})
  raise "Message properties should be a Hash" unless props.kind_of?(Hash)
  log.info "[simplejob] New job: #{topic}, #{props.truncated_inspect}"
  publish(topic, props.to_json)
end
Also aliased as: orig_send
start(opts, &proc) click to toggle source
# File lib/simplejob/client.rb, line 11
def start(opts, &proc)
  client = self
  AMQP.start(opts) do
    Signal.trap("INT") { puts; stop }
    Signal.trap("TERM") { puts; stop }

    @channel = AMQP::Channel.new
    @exchange = exchange(opts[:exchange_name] || DEFAULT_EXCHANGE_NAME)

    instance_exec(opts, &proc)
  end
end
stop() click to toggle source
# File lib/simplejob/client.rb, line 24
def stop
  AMQP.stop { EM.stop }
end
subscribe(queue, &proc) click to toggle source
# File lib/simplejob/client.rb, line 44
def subscribe(queue, &proc)
  queue.subscribe({ :ack => true }, &proc)
end

Private Instance Methods

log() click to toggle source
# File lib/simplejob/client.rb, line 57
def log
  Client.log
end