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
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