module Resque::DynamicQueues
def get_next_job(grouped_queues)
def get_next_job(grouped_queues) @n ||= 1 queue_index = {} grouped_queues.each_with_index do |(key, queue_list), index| queue_list.each do |queue| queue_index[queue] = index end end grouped_queues = grouped_queues.values.rotate(@n).map{|queue_list| get_categorized_queues(queue_list).to_h.values.flatten}.flatten.delete_if{|queue| !should_work_on_queue?(queue)}.map{|queue| "queue:#{queue}"} queue, payload = get_job_from_queues(grouped_queues) return nil if queue.blank? queue = queue.split("queue:")[1] @n = queue_index[queue] + 1 return create_job(queue, Resque.decode(payload)) end