Module: Datadog::Tracing::Contrib::WaterDrop::Patcher

Includes:
Patcher
Defined in:
lib/datadog/tracing/contrib/waterdrop/patcher.rb

Overview

Patcher enables patching of ‘waterdrop’ module.

Class Method Summary collapse

Methods included from Patcher

included

Class Method Details

.add_middleware(producer) ⇒ Object



41
42
43
44
# File 'lib/datadog/tracing/contrib/waterdrop/patcher.rb', line 41

def add_middleware(producer)
  included_middlewares = producer.middleware.instance_variable_get(:@steps)
  producer.middleware.append(Middleware) unless included_middlewares.include?(Middleware)
end

.patchObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/datadog/tracing/contrib/waterdrop/patcher.rb', line 21

def patch
  require_relative 'producer'
  require_relative 'middleware'

  ::WaterDrop::Producer.prepend(Producer)
  ::WaterDrop.instrumentation.subscribe('producer.configured') do |event|
    producer = event[:producer]
    add_middleware(producer)

    if Datadog.configuration.data_streams.enabled
      producer.monitor.subscribe('message.acknowledged') do |ack_event|
        if Datadog::DataStreams.enabled?
          payload = ack_event.payload
          Datadog::DataStreams.track_kafka_produce(payload[:topic], payload[:partition], payload[:offset])
        end
      end
    end
  end
end

.target_versionObject



17
18
19
# File 'lib/datadog/tracing/contrib/waterdrop/patcher.rb', line 17

def target_version
  Integration.version
end