Sha256: cddfcd9e54e6119af3a35711f1a86bc9b55914dfece71c73812aeeea03e84b29

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

module Sidekiq::Status
# Should be in the client middleware chain
  class ClientMiddleware
    include Storage

    # Parameterized initialization, use it when adding middleware to client chain
    # chain.add Sidekiq::Status::ClientMiddleware, :expiration => 60 * 5
    # @param [Hash] opts middleware initialization options
    # @option opts [Fixnum] :expiration ttl for complete jobs
    def initialize(opts = {})
      @expiration = opts[:expiration]
    end

    # Uses msg['jid'] id and puts :queued status in the job's Redis hash
    # @param [Class] worker_class if includes Sidekiq::Status::Worker, the job gets processed with the plugin
    # @param [Array] msg job arguments
    # @param [String] queue the queue's name
    # @param [ConnectionPool] redis_pool optional redis connection pool
    def call(worker_class, msg, queue, redis_pool=nil)
      initial_metadata = { 
        jid: msg['jid'],
        status: :queued,
        worker: worker_class, 
        args: msg['args'].to_a.empty? ? nil : msg['args'].to_json
      }
      store_for_id msg['jid'], initial_metadata, @expiration, redis_pool
      yield
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sidekiq-status-0.6.0 lib/sidekiq-status/client_middleware.rb