class Nightwing::Sidekiq::QueueStats

Sidekiq server middleware for measuring Sidekiq queues

Public Instance Methods

call(_worker, _msg, queue) { || ... } click to toggle source

Sends Sidekiq queue metrics to client then yields

@param [Sidekiq::Worker] _worker

The worker the job belongs to.

@param [Hash] _msg

The job message.

@param [String] queue

The current queue.
# File lib/nightwing/sidekiq/queue_stats.rb, line 19
def call(_worker, _msg, queue)
  sidekiq_queue = ::Sidekiq::Queue.new(queue)
  queue_namespace = metrics.for(queue: queue)

  client.measure "#{queue_namespace}.size", sidekiq_queue.size
  client.measure "#{queue_namespace}.latency", sidekiq_queue.latency
  client.increment "#{queue_namespace}.processed"

  begin
    yield
  rescue
    client.increment "#{queue_namespace}.failed"
    raise
  end
end