class Roundhouse::Queue
Encapsulates a queue within Roundhouse
. Allows enumeration of all jobs within the queue and deletion of jobs.
queue = Roundhouse::Queue.new("mailer") queue.each do |job| job.klass # => 'MyWorker' job.args # => [1, 2, 3] job.delete if job.jid == 'abcdef1234567890' end
Attributes
queue_id[R]
Public Class Methods
all()
click to toggle source
# File lib/roundhouse/api.rb, line 231 def self.all Roundhouse.redis do |c| c.smembers(Roundhouse::Monitor::BUCKETS).map { |bucket_num| c.hkeys("#{Roundhouse::Monitor::STATUS}:#{bucket_num}") } end.flatten.sort.map {|q| Roundhouse::Queue.new(q) } end
new(queue_id)
click to toggle source
# File lib/roundhouse/api.rb, line 239 def initialize(queue_id) @queue_id = queue_id.to_i @rname = "queue:#{queue_id}" end
Public Instance Methods
bucket()
click to toggle source
# File lib/roundhouse/api.rb, line 253 def bucket Roundhouse::Monitor.status_bucket(queue_id) end
clear()
click to toggle source
# File lib/roundhouse/api.rb, line 299 def clear Roundhouse.redis do |conn| conn.multi do conn.del(@rname) conn.hdel(bucket, queue_id) end end end
Also aliased as: 💣
each() { |job| ... }
click to toggle source
# File lib/roundhouse/api.rb, line 274 def each initial_size = size deleted_size = 0 page = 0 page_size = 50 loop do range_start = page * page_size - deleted_size range_end = page * page_size - deleted_size + (page_size - 1) entries = Roundhouse.redis do |conn| conn.lrange @rname, range_start, range_end end break if entries.empty? page += 1 entries.each do |entry| yield Job.new(entry, @name) end deleted_size = initial_size - size end end
find_job(jid)
click to toggle source
# File lib/roundhouse/api.rb, line 295 def find_job(jid) detect { |j| j.jid == jid } end
latency()
click to toggle source
# File lib/roundhouse/api.rb, line 266 def latency entry = Roundhouse.redis do |conn| conn.lrange(@rname, -1, -1) end.first return 0 unless entry Time.now.to_f - Roundhouse.load_json(entry)['enqueued_at'] end
paused?()
click to toggle source
Roundhouse
Pro overrides this
# File lib/roundhouse/api.rb, line 262 def paused? false end
size()
click to toggle source
# File lib/roundhouse/api.rb, line 257 def size Roundhouse.redis { |con| con.llen(@rname) } end
status()
click to toggle source
# File lib/roundhouse/api.rb, line 244 def status case Roundhouse.redis { |conn| Roundhouse::Monitor.queue_status(conn, queue_id) } when Roundhouse::Monitor::ACTIVE then :active when Roundhouse::Monitor::EMPTY then :empty when Roundhouse::Monitor::SUSPENDED then :suspended else :unknown end end