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

.patchObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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]

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

    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