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 = Resque.redis.blpop(grouped_queues)
  queue = queue.split("queue:")[1]
  @n = queue_index[queue] + 1
  return create_job(queue, Resque.decode(payload))      
end