class Jober::Queue

Attributes

queue_name[RW]
queue_name_base[RW]

Public Class Methods

dequeue(*args) click to toggle source
# File lib/jober/queue.rb, line 25
def self.dequeue(*args)
  Jober.redis.lpush(queue_name, Jober.dump_args(*args))
end
enqueue(*args) click to toggle source
# File lib/jober/queue.rb, line 21
def self.enqueue(*args)
  Jober.redis.rpush(queue_name, Jober.dump_args(*args))
end
inherited(base) click to toggle source
Calls superclass method Jober::Task::inherited
# File lib/jober/queue.rb, line 3
def self.inherited(base)
  super
  base.set_queue_name(base.short_name)
end
len() click to toggle source
# File lib/jober/queue.rb, line 29
def self.len
  Jober.redis.llen(self.queue_name)
end
set_queue_name(q) click to toggle source
# File lib/jober/queue.rb, line 11
def set_queue_name(q)
  @queue_name_base = q
  @queue_name = Jober.key("queue:#{q}")
end

Public Instance Methods

len() click to toggle source
# File lib/jober/queue.rb, line 33
def len
  self.class.len
end
pop() click to toggle source
# File lib/jober/queue.rb, line 37
def pop
  res = Jober.redis.lpop(queue_name)
  Jober.load(res) if res
end
queue_name() click to toggle source
# File lib/jober/queue.rb, line 17
def queue_name
  self.class.queue_name
end
retry_event() click to toggle source
# File lib/jober/queue.rb, line 57
def retry_event
  self.class.dequeue(*@args) if @args
end
retry_event_later() click to toggle source
# File lib/jober/queue.rb, line 61
def retry_event_later
  self.class.enqueue(*@args) if @args
end
run() click to toggle source
# File lib/jober/queue.rb, line 42
def run
  cnt = 0
  while @args = pop
    perform(*@args)
    cnt += 1

    if stopped
      break
    end

    info { "processed #{cnt}" } if cnt % 1000 == 0
  end
  info { "processed total #{cnt}" }
end