Class: Lepus::Consumers::Stats

Inherits:
Object
  • Object
show all
Defined in:
lib/lepus/consumers/stats.rb

Overview

Thread-safe per-consumer-class statistics tracker. Uses atomic counters to track processed/rejected/errored message counts.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(consumer_class) ⇒ Stats

Returns a new instance of Stats.



12
13
14
15
16
17
# File 'lib/lepus/consumers/stats.rb', line 12

def initialize(consumer_class)
  @consumer_class = consumer_class
  @processed = Concurrent::AtomicFixnum.new(0)
  @rejected = Concurrent::AtomicFixnum.new(0)
  @errored = Concurrent::AtomicFixnum.new(0)
end

Instance Attribute Details

#consumer_classObject (readonly)

Returns the value of attribute consumer_class.



10
11
12
# File 'lib/lepus/consumers/stats.rb', line 10

def consumer_class
  @consumer_class
end

Instance Method Details

#erroredObject



39
40
41
# File 'lib/lepus/consumers/stats.rb', line 39

def errored
  @errored.value
end

#processedObject



31
32
33
# File 'lib/lepus/consumers/stats.rb', line 31

def processed
  @processed.value
end

#record_erroredObject



27
28
29
# File 'lib/lepus/consumers/stats.rb', line 27

def record_errored
  @errored.increment
end

#record_processedObject



19
20
21
# File 'lib/lepus/consumers/stats.rb', line 19

def record_processed
  @processed.increment
end

#record_rejectedObject



23
24
25
# File 'lib/lepus/consumers/stats.rb', line 23

def record_rejected
  @rejected.increment
end

#rejectedObject



35
36
37
# File 'lib/lepus/consumers/stats.rb', line 35

def rejected
  @rejected.value
end

#to_hObject



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/lepus/consumers/stats.rb', line 43

def to_h
  config = consumer_class.config
  {
    class_name: consumer_class.name,
    exchange: config.exchange_name,
    queue: config.queue_name,
    route: extract_route(config),
    threads: config.worker_threads,
    processed: @processed.value,
    rejected: @rejected.value,
    errored: @errored.value
  }
end