class Sidekiq::Statsd::ServerMiddleware

Attributes

client[R]
prefix[R]

Public Class Methods

new(client, options = {}) click to toggle source
# File lib/sidekiq/statsd/server_middleware.rb, line 9
def initialize(client, options = {})
  @client = client
  @prefix = options.delete(:prefix) || "sidekiq"
end

Public Instance Methods

call(worker, msg, queue) { || ... } click to toggle source
# File lib/sidekiq/statsd/server_middleware.rb, line 14
def call(worker, msg, queue)
  if msg['enqueued_at']
    # convert and round to ms
    latency = ((Time.now.to_f - msg['enqueued_at']) * 1000).round 
    client.timing(metric_key(worker, "latency"), latency)
  end

  client.time(metric_key(worker, "duration")) do
    yield
  end

  client.increment(metric_key(worker, "success"))
rescue => e
  client.increment(metric_key(worker, "failure"))
  raise e
end

Private Instance Methods

metric_key(worker, key) click to toggle source
# File lib/sidekiq/statsd/server_middleware.rb, line 33
def metric_key(worker, key)
  worker_name = worker.class.name.underscore.gsub("/", ".")
  [prefix, worker_name, key].reject(&:nil?).join(".")
end