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
|