module Resque::DynamicQueues
def reserve_with_round_robin
def reserve_with_round_robin grouped_queues = self.get_grouped_queues #Instance queue grouping if !grouped_queues.keys.include?(nil) && grouped_queues.keys.size > 0 if ZuoraConnect.configuration.blpop_queue @job_in_progress = get_restricted_job return @job_in_progress if @job_in_progress.present? return @job_in_progress = get_queued_job(grouped_queues) else @n ||= 0 @n += 1 @n = @n % grouped_queues.keys.size grouped_queues.keys.rotate(@n).each do |key| self.get_categorized_queues(grouped_queues[key]).each do |key, queues| queues.each do |queue| log! "Checking #{queue}" if should_work_on_queue?(queue) && @job_in_progress = Resque::Job.reserve(queue) log! "Found job on #{queue}" return @job_in_progress end end end @n += 1 # Start the next search at the queue after the one from which we pick a job. end nil end else return reserve_without_round_robin end rescue Exception => e log "Error reserving job: #{e.inspect}" log e.backtrace.join("\n") raise e end