module Resque::DynamicQueues

def get_queued_job(grouped_queues)

def get_queued_job(grouped_queues)
  # Bounded retry
  1.upto(Resque::Plugins::ConcurrentRestriction.reserve_queued_job_attempts) do |i|
    resque_job = get_next_job(grouped_queues)
    # Short-curcuit if a job was not found
    return if resque_job.nil?
    # If there is a job on regular queues, then only run it if its not restricted
    job_class = resque_job.payload_class
    job_args = resque_job.args
    # Return to work on job if not a restricted job
    return resque_job unless job_class.is_a?(Resque::Plugins::ConcurrentRestriction)
    # Keep trying if job is restricted. If job is runnable, we keep the lock until
    # done_working
    return resque_job unless job_class.stash_if_restricted(resque_job)
  end
  # Safety net, here in case we hit the upper bound and there are still queued items
  return nil
end