Module: DispatchRider::Integrations::Appsignal

Defined in:
lib/dispatch-rider/integrations/appsignal.rb

Class Method Summary collapse

Class Method Details

.wrap_message(job, message) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/dispatch-rider/integrations/appsignal.rb', line 8

def self.wrap_message(job, message)
  begin
    ::Appsignal::Transaction.create(
      SecureRandom.uuid,
      ::Appsignal::Transaction::BACKGROUND_JOB,
      ::Appsignal::Transaction::GenericRequest.new(ENV.to_hash)
    )

    ::ActiveSupport::Notifications.instrument(
      'perform_job.dispatch-rider',
      :class => message.subject,
      :method => 'handle',
      :attempts => message.receive_count,
      :queue => message.queue_name,
      :queue_time => (Time.now.to_f - message.sent_at.to_f) * 1000
    ) do
      job.call
    end
  rescue Exception => exception
    unless ::Appsignal.is_ignored_error?(exception)
      ::Appsignal::Transaction.current.add_error(exception)
    end
    raise exception
  ensure
    ::Appsignal::Transaction.complete_current!
  end
end