Class: Meeseeks::Meeseeks

Inherits:
Object
  • Object
show all
Defined in:
lib/meeseeks/meeseeks.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data_submission_url: nil, interval: nil, max_batch_size: nil, max_queue_size: nil) ⇒ Meeseeks

Returns a new instance of Meeseeks.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/meeseeks/meeseeks.rb', line 16

def initialize(data_submission_url: nil,
               interval: nil,
               max_batch_size: nil,
               max_queue_size: nil)
  @imploded = false
  @queue = Queue.new
  @interval = interval || ENV.fetch('MEESEEKS_INTERVAL', 60).to_i
  @max_queue_size = max_queue_size ||
                    ENV.fetch('MEESEEKS_MAX_QUEUE_SIZE', 100).to_i
  @max_batch_size = max_batch_size ||
                    ENV.fetch('MEESEEKS_MAX_BATCH_SIZE', 1_000).to_i
  @data_submission_url = data_submission_url ||
                         ENV.fetch('MEESEEKS_DATA_SUBMISSION_URL')
  start
end

Instance Attribute Details

#harvesterObject (readonly)

Returns the value of attribute harvester.



14
15
16
# File 'lib/meeseeks/meeseeks.rb', line 14

def harvester
  @harvester
end

#http_trapObject (readonly)

Returns the value of attribute http_trap.



14
15
16
# File 'lib/meeseeks/meeseeks.rb', line 14

def http_trap
  @http_trap
end

#queueObject (readonly)

Returns the value of attribute queue.



14
15
16
# File 'lib/meeseeks/meeseeks.rb', line 14

def queue
  @queue
end

Instance Method Details

#implode!Object



57
58
59
60
61
62
63
64
65
# File 'lib/meeseeks/meeseeks.rb', line 57

def implode!
  return if @imploded

  @imploded = true
  harvester.stop
  harvester.kill
  queue.clear
  queue.close
end

#record(group, metric, value, time = DateTime.now) ⇒ Object



42
43
44
45
46
# File 'lib/meeseeks/meeseeks.rb', line 42

def record(group, metric, value, time = DateTime.now)
  record!(group, metric, value, time)
rescue Error
  false
end

#record!(group, metric, value, time = DateTime.now) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/meeseeks/meeseeks.rb', line 32

def record!(group, metric, value, time = DateTime.now)
  return false if @imploded
  return false if @queue.size >= @max_queue_size

  Payload.validate_type!(value)
  @queue.push(Payload.for_group(group, metric, value, time))

  true
end

#statsObject



48
49
50
51
52
53
54
55
# File 'lib/meeseeks/meeseeks.rb', line 48

def stats
  {
    queue_size: @queue.size,
    harvester: @harvester.stats,
    http_trap: @http_trap.stats,
    imploded: @imploded
  }
end