class Jobster::Job
Attributes
id[R]
params[R]
Public Class Methods
new(id, params = {})
click to toggle source
# File lib/jobster/job.rb, line 9 def initialize(id, params = {}) @id = id @params = params.with_indifferent_access end
parse_args_for_queue(queue, params)
click to toggle source
# File lib/jobster/job.rb, line 32 def self.parse_args_for_queue(queue, params) queue.is_a?(Hash) ? [:main, queue] : [queue, params] end
perform(params = {})
click to toggle source
# File lib/jobster/job.rb, line 50 def self.perform(params = {}) new(nil, params).perform end
queue(queue = {}, params = {}, &block)
click to toggle source
# File lib/jobster/job.rb, line 22 def self.queue(queue = {}, params = {}, &block) queue, params = parse_args_for_queue(queue, params) self.queue_job(Jobster.exchange, queue, self.name, params, &block) end
queue_job(exchange, queue_name, class_name, params, options = {}, &block)
click to toggle source
# File lib/jobster/job.rb, line 36 def self.queue_job(exchange, queue_name, class_name, params, options = {}, &block) job_id = SecureRandom.uuid[0,8] job_payload = {'params' => params, 'class_name' => class_name, 'id' => job_id, 'queue' => queue_name} publish_opts = {} publish_opts[:persistent] = true publish_opts[:routing_key] = queue_name publish_opts[:expiration] = options[:ttl] * 1000 if options[:ttl] block.call(job_id, publish_opts) if block_given? a = exchange.publish(job_payload.to_json, publish_opts) when_string = (options[:ttl] ? "in #{options[:ttl]}s" : "immediately") Jobster.config.logger.info "[#{job_id}] \e[34m#{class_name}\e[0m queued to run #{when_string} on #{queue_name} queue" job_id end
queue_with_delay(delay, queue = {}, params = {}, &block)
click to toggle source
# File lib/jobster/job.rb, line 27 def self.queue_with_delay(delay, queue = {}, params = {}, &block) queue, params = parse_args_for_queue(queue, params) self.queue_job(Jobster.delay_exchange, queue, self.name, params, :ttl => delay, &block) end
Public Instance Methods
log(text)
click to toggle source
# File lib/jobster/job.rb, line 18 def log(text) Jobster.config.logger.info "[#{@id}] #{text}" end
perform()
click to toggle source
# File lib/jobster/job.rb, line 14 def perform # Override in child jobs end