Class: Lepus::Consumers::Stats
- Inherits:
-
Object
- Object
- Lepus::Consumers::Stats
- 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
-
#consumer_class ⇒ Object
readonly
Returns the value of attribute consumer_class.
Instance Method Summary collapse
- #errored ⇒ Object
-
#initialize(consumer_class) ⇒ Stats
constructor
A new instance of Stats.
- #processed ⇒ Object
- #record_errored ⇒ Object
- #record_processed ⇒ Object
- #record_rejected ⇒ Object
- #rejected ⇒ Object
- #to_h ⇒ Object
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_class ⇒ Object (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
#errored ⇒ Object
39 40 41 |
# File 'lib/lepus/consumers/stats.rb', line 39 def errored @errored.value end |
#processed ⇒ Object
31 32 33 |
# File 'lib/lepus/consumers/stats.rb', line 31 def processed @processed.value end |
#record_errored ⇒ Object
27 28 29 |
# File 'lib/lepus/consumers/stats.rb', line 27 def record_errored @errored.increment end |
#record_processed ⇒ Object
19 20 21 |
# File 'lib/lepus/consumers/stats.rb', line 19 def record_processed @processed.increment end |
#record_rejected ⇒ Object
23 24 25 |
# File 'lib/lepus/consumers/stats.rb', line 23 def record_rejected @rejected.increment end |
#rejected ⇒ Object
35 36 37 |
# File 'lib/lepus/consumers/stats.rb', line 35 def rejected @rejected.value end |
#to_h ⇒ Object
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 |