Class: Payloop::Collector
- Inherits:
-
Object
- Object
- Payloop::Collector
- Defined in:
- lib/payloop/collector.rb
Overview
Handles asynchronous submission of analytics to Payloop collector
Constant Summary collapse
- DEFAULT_MAX_RETRIES =
3- RETRY_DELAY =
seconds
1
Instance Method Summary collapse
-
#initialize(config) ⇒ Collector
constructor
A new instance of Collector.
-
#shutdown ⇒ Object
Gracefully shutdown the collector.
-
#submit(payload) ⇒ Object
Submit analytics payload synchronously (for testing).
-
#submit_async(payload) ⇒ Object
Submit analytics payload asynchronously.
Constructor Details
#initialize(config) ⇒ Collector
Returns a new instance of Collector.
14 15 16 17 18 19 20 21 22 |
# File 'lib/payloop/collector.rb', line 14 def initialize(config) @config = config @executor = Concurrent::ThreadPoolExecutor.new( min_threads: 1, max_threads: 5, max_queue: 100, fallback_policy: :discard ) end |
Instance Method Details
#shutdown ⇒ Object
Gracefully shutdown the collector
39 40 41 42 |
# File 'lib/payloop/collector.rb', line 39 def shutdown @executor.shutdown @executor.wait_for_termination(5) end |
#submit(payload) ⇒ Object
Submit analytics payload synchronously (for testing)
34 35 36 |
# File 'lib/payloop/collector.rb', line 34 def submit(payload) submit_with_retry(payload) end |
#submit_async(payload) ⇒ Object
Submit analytics payload asynchronously
25 26 27 28 29 30 31 |
# File 'lib/payloop/collector.rb', line 25 def submit_async(payload) @executor.post do submit_with_retry(payload) rescue StandardError => e warn "Payloop: Failed to submit analytics: #{e.}" end end |