Class: JetstreamBridge::ConsumerMiddleware::TracingMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/jetstream_bridge/consumer/middleware.rb

Overview

Tracing middleware for distributed tracing

Examples:

consumer.use(JetstreamBridge::Consumer::TracingMiddleware.new)

Instance Method Summary collapse

Instance Method Details

#call(event) ⇒ Object



117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/jetstream_bridge/consumer/middleware.rb', line 117

def call(event)
  trace_id = event..trace_id || event.trace_id

  if defined?(ActiveSupport::CurrentAttributes)
    # Set trace context if using Rails CurrentAttributes
    previous_trace_id = Current.trace_id if defined?(Current)
    Current.trace_id = trace_id if defined?(Current)
  end

  yield
ensure
  Current.trace_id = previous_trace_id if defined?(Current) && defined?(previous_trace_id)
end