Module: Datadog::Tracing::Contrib::WaterDrop::Middleware

Defined in:
lib/datadog/tracing/contrib/waterdrop/middleware.rb

Overview

Middleware to propagate tracing context in messages produced by WaterDrop

Class Method Summary collapse

Class Method Details

.call(message) ⇒ Object



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/datadog/tracing/contrib/waterdrop/middleware.rb', line 12

def call(message)
  trace_op = Datadog::Tracing.active_trace

  if trace_op && Datadog::Tracing::Distributed::PropagationPolicy.enabled?(
    global_config: configuration,
    trace: trace_op
  )
    WaterDrop.inject(trace_op.to_digest, message[:headers] ||= {})
  end

  if Datadog::DataStreams.enabled?
    Datadog::DataStreams.set_produce_checkpoint(
      type: 'kafka',
      destination: message[:topic],
      auto_instrumentation: true
    ) do |key, value|
      message[:headers] ||= {}
      message[:headers][key] = value
    end
  end

  message
end