class Sidekiq::ReliableFetch

Constants

RELIABLE_FETCH_IDLE_TIMEOUT

For reliable fetch we don't use Redis' blocking operations so we inject a regular sleep into the loop.

Attributes

queues_size[R]

Public Class Methods

new(options) click to toggle source
Calls superclass method Sidekiq::BaseReliableFetch::new
# File lib/sidekiq/reliable_fetch.rb, line 11
def initialize(options)
  super

  @queues = queues.uniq if strictly_ordered_queues
  @queues_size = queues.size
end

Private Instance Methods

retrieve_unit_of_work() click to toggle source
# File lib/sidekiq/reliable_fetch.rb, line 20
def retrieve_unit_of_work
  queues_list = strictly_ordered_queues ? queues : queues.shuffle

  queues_list.each do |queue|
    work = Sidekiq.redis do |conn|
      conn.rpoplpush(queue, self.class.working_queue_name(queue))
    end

    return UnitOfWork.new(queue, work) if work
  end

  # We didn't find a job in any of the configured queues. Let's sleep a bit
  # to avoid uselessly burning too much CPU
  sleep(RELIABLE_FETCH_IDLE_TIMEOUT)

  nil
end