Class: Dionysus::Producer::Outbox::LatencyTracker

Inherits:
Object
  • Object
show all
Defined in:
lib/dionysus/producer/outbox/latency_tracker.rb

Instance Method Summary collapse

Constructor Details

#initialize(config: Dionysus::Producer.configuration, clock: Time) ⇒ LatencyTracker

Returns a new instance of LatencyTracker.



10
11
12
13
# File 'lib/dionysus/producer/outbox/latency_tracker.rb', line 10

def initialize(config: Dionysus::Producer.configuration, clock: Time)
  @config = config
  @clock = clock
end

Instance Method Details

#calculate(interval: 1.minute) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/dionysus/producer/outbox/latency_tracker.rb', line 15

def calculate(interval: 1.minute)
  records = outbox_model.published_since(interval.ago)
  latencies = records.map(&:publishing_latency)

  LatencyTrackerResult.new(
    latencies.min.to_d,
    latencies.max.to_d,
    calculate_average(latencies),
    calculate_highest_since_creation_date.to_d
  )
end