Sha256: c3e43284737d611902bd5b067dfb6a13ebf303a8acf8356d40c9d2bb5f8f6f70

Contents?: true

Size: 1.44 KB

Versions: 2

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require "sidekiq"

require "sidekiq/throttled/queue_name"

module Sidekiq
  module Throttled
    # BRPOP response envelope.
    #
    # @see Throttled::Fetch
    # @private
    class UnitOfWork
      # @return [String] Redis key where job was pulled from
      attr_reader :queue

      # @return [String] Job's JSON payload
      attr_reader :job

      # @param [String] queue Redis key where job was pulled from
      # @param [String] job Job's JSON payload
      def initialize(queue, job)
        @queue = queue
        @job   = job
      end

      # Callback that is called by `Sidekiq::Processor` when job was
      # succeccfully processed. Most this is used by `ReliableFetch`
      # of Sidekiq Pro/Enterprise to remove job from running queue.
      #
      # @return [void]
      def acknowledge
        # do nothing
      end

      # Normalized `queue` name.
      #
      # @see QueueName.normalize
      # @return [String]
      def queue_name
        @queue_name ||= QueueName.normalize queue
      end

      # Pushes job back to the queue.
      #
      # @note This is triggered when job was not finished and Sidekiq server
      #   process was terminated (shutdowned). Thus it should be reverse of
      #   whatever fetcher was doing to pull the job out of queue.
      #
      # @return [void]
      def requeue
        Sidekiq.redis { |conn| conn.rpush(QueueName.expand(queue_name), job) }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sidekiq-throttled-0.6.1 lib/sidekiq/throttled/unit_of_work.rb
sidekiq-throttled-0.6.0 lib/sidekiq/throttled/unit_of_work.rb