class ElasticAPM::Spies::ShoryukenSpy::Middleware

@api private

Public Instance Methods

call(worker_instance, queue, sqs_msg, body) { || ... } click to toggle source
# File lib/elastic_apm/spies/shoryuken.rb, line 27
def call(worker_instance, queue, sqs_msg, body)
  transaction =
    ElasticAPM.start_transaction(
      job_class(worker_instance, body),
      'shoryuken.job'
    )

  ElasticAPM.set_label('shoryuken.id', sqs_msg.message_id)
  ElasticAPM.set_label('shoryuken.queue', queue)

  yield

  transaction&.done :success
  transaction&.outcome = Transaction::Outcome::SUCCESS
rescue ::Exception => e
  ElasticAPM.report(e, handled: false)
  transaction&.done :error
  transaction&.outcome = Transaction::Outcome::FAILURE
  raise
ensure
  ElasticAPM.end_transaction
end

Private Instance Methods

job_class(worker_instance, body) click to toggle source
# File lib/elastic_apm/spies/shoryuken.rb, line 52
def job_class(worker_instance, body)
  klass = body['job_class'] if body.is_a?(Hash)
  klass || worker_instance.class.name
end