Class: SolidEvents::Subscribers::EnqueueSubscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_events/subscribers/enqueue_subscriber.rb

Instance Method Summary collapse

Instance Method Details

#call(_name, started, finished, _unique_id, payload) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/solid_events/subscribers/enqueue_subscriber.rb', line 6

def call(_name, started, finished, _unique_id, payload)
  trace = SolidEvents::Tracer.current_trace
  job = payload[:job]
  return unless trace
  return unless job

  duration_ms = ((finished - started) * 1000.0).round(2)
  event = SolidEvents::Tracer.record_event!(
    event_type: "job_enqueue",
    name: job.class.name,
    payload: {
      job_id: job.job_id,
      queue: job.queue_name
    },
    duration_ms: duration_ms
  )
  SolidEvents::Tracer.register_async_causal_link!(
    job_id: job.job_id,
    caused_by_trace_id: trace.id,
    caused_by_event_id: event&.id
  )
end