class Sidekiq::Batching::Middleware

Public Instance Methods

call(worker_class, msg, queue, redis_pool = nil) { || ... } click to toggle source
# File lib/sidekiq/batching/middleware.rb, line 4
def call(worker_class, msg, queue, redis_pool = nil)
  worker_class = worker_class.classify.constantize if worker_class.is_a?(String)
  options = worker_class.get_sidekiq_options

  batch =
    options.keys.include?('batch_size') ||
    options.keys.include?('batch_flush_interval')

  passthrough =
    msg['args'] &&
    msg['args'].is_a?(Array) &&
    msg['args'].try(:first) == true

  if batch && not(passthrough)
    add_to_batch(worker_class, queue, msg, redis_pool)
  else
    if batch && passthrough
      msg['args'].shift
    end
    yield
  end
end

Private Instance Methods

add_to_batch(worker_class, queue, msg, redis_pool = nil) click to toggle source
# File lib/sidekiq/batching/middleware.rb, line 28
def add_to_batch(worker_class, queue, msg, redis_pool = nil)
  Sidekiq::Batching::Batch.new(worker_class.name, queue, redis_pool).add(msg['args'])
  nil
end