summaryrefslogtreecommitdiff
path: root/exe/killjoy
blob: 33a404907a4cc5654e14a26b9143d6ecf6cc718d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env ruby

require "bundler/setup"
$LOAD_PATH.unshift(File.expand_path("../lib", File.dirname(__FILE__)))
require "killjoy"
require "sneakers/runner"
require "sneakers/metrics/statsd_metrics"
require "sneakers/metrics/logging_metrics"
require "logger"
require "statsd-ruby"

class BeforeFork
  def call
    puts "BEFORE FORK #{Process.pid}"
  rescue => error
    puts [error.message, error.backtrace].inspect
  end
end

class AfterFork
  def call
    puts "AFTER FORK #{Process.pid}"
    Killjoy::Startup.new(Spank::Container.new).run do |container|
      Spank::IOC.bind_to(container)
      Spank::IOC.resolve(:session).execute("select * from system.hints;")
    end
  rescue => error
    puts [error.message, error.backtrace].inspect
  end
end

Sneakers.configure({
  amqp: ENV.fetch("AMQP_URL", "amqp://guest:guest@localhost:5672"),
  exchange: 'shard.killjoy',
  exchange_type: 'x-modulus-hash',
  daemonize: false,
  log: STDOUT,
  metrics: Sneakers::Metrics::LoggingMetrics.new,
  #metrics: Sneakers::Metrics::StatsdMetrics.new(Statsd.new(ENV["STATSD_HOST"], 9125))
  #timeout_job_after: 5,
  #workers: 1,
  env: ENV.fetch('ENV', 'development'),
  ack: ENV["ASYNC"] != "true",
  durable: true,
  prefetch: Facter.value('processors')['count'].to_i,
  threads: Facter.value('processors')['count'].to_i,
  hooks: {
    after_fork: AfterFork.new,
    before_fork: BeforeFork.new,
  }
})
Sneakers.logger.level = Logger::INFO
Sneakers::Runner.new([ Killjoy::Consumer ]).run