class DatadogQueueBus::Middleware

Use this middleware with queue-bus to start recording spans everytime the queue-bus performs work on the server.

Public Instance Methods

call(attrs) click to toggle source
# File lib/datadog_queue_bus/middleware.rb, line 7
def call(attrs)
  class_proxy = attrs['bus_class_proxy']
  event_type = attrs['bus_event_type']
  sub_key = attrs['bus_rider_sub_key']

  resource = class_proxy
  resource += " event=#{event_type}" if event_type
  resource += " sub=#{sub_key}" if sub_key

  Datadog.tracer.trace('queue-bus.worker',
                       service: DatadogQueueBus.service_name,
                       resource: resource) do |span|
    attrs.keys.grep(/^bus_/).each do |key|
      span.set_tag("queue-bus.#{key}", attrs[key])
    end
    @app.call
  end
end