Class: Sneakers::Laces::ReloadWorker

Inherits:
Object
  • Object
show all
Defined in:
lib/sneakers/laces/reload_worker.rb

Constant Summary collapse

DEFAULT_OPTS =
{
  threads:      1,
  queue_options: {
    exclusive:   true,
    auto_delete: true,
    durable:     false
  }
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configure(worker_tags:) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/sneakers/laces/reload_worker.rb', line 16

def configure(worker_tags:)
  routing_keys = worker_tags.map { |tag| routing_key(worker_tag: tag) }

  return if routing_keys.blank?

  include Sneakers::Worker

  # empty queue name makes consumer use dynamic one
  from_queue '', DEFAULT_OPTS.merge(routing_key: routing_keys)
end

.routing_key(worker_tag:) ⇒ Object



27
28
29
# File 'lib/sneakers/laces/reload_worker.rb', line 27

def routing_key(worker_tag:)
  ['reload', worker_tag].join(':')
end

Instance Method Details

#work(_msg) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/sneakers/laces/reload_worker.rb', line 32

def work(_msg)
  # USR1 signal forces serverengine to gracefully restart child processes
  # https://github.com/treasure-data/serverengine#live-restart
  Process.kill('USR1', Process.pid)
ensure
  ack!
end