Class: Payloop::Collector

Inherits:
Object
  • Object
show all
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

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

#shutdownObject

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.message}"
  end
end