class Rabbitek::Server::Hooks::TimeTracker

Hook to keep track of time used for processing single job

Public Instance Methods

call(consumer, message) click to toggle source
Calls superclass method Rabbitek::ServerHook#call
# File lib/rabbitek/server/hooks/time_tracker.rb, line 13
def call(consumer, message)
  log_started(consumer, message)

  start = current_time

  super
ensure
  total_time = current_time - start

  log_finished(consumer, message, total_time)
  metrics_measure_time(consumer, total_time)
end

Private Instance Methods

current_time() click to toggle source
# File lib/rabbitek/server/hooks/time_tracker.rb, line 28
def current_time
  Process.clock_gettime(Process::CLOCK_MONOTONIC)
end
log_finished(consumer, message, total_time) click to toggle source
# File lib/rabbitek/server/hooks/time_tracker.rb, line 36
def log_finished(consumer, message, total_time)
  info(
    message: 'Finished job',
    consumer: message.delivery_info.routing_key,
    time: total_time,
    jid: consumer.jid
  )
end
log_started(consumer, message) click to toggle source
# File lib/rabbitek/server/hooks/time_tracker.rb, line 32
def log_started(consumer, message)
  info(message: 'Starting job', consumer: message.delivery_info.routing_key, jid: consumer.jid)
end
metrics_measure_time(consumer, total_time) click to toggle source
# File lib/rabbitek/server/hooks/time_tracker.rb, line 45
def metrics_measure_time(consumer, total_time)
  Yabeda.rabbitek.processed_messages_runtime.measure({ consumer: consumer.class }, total_time)
end