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
|
####################################################################
# Simple queue daemon example
# Using synchronous Beanstalk Ruby driver (beanstalk-client)
####################################################################
$:.unshift ::File.dirname(__FILE__) + '/../lib'
require 'rubygems'
require 'raemon'
require 'beanstalk-client'
class JobWorker
include Raemon::Worker
def start
super
@beanstalk = Beanstalk::Pool.new(['localhost:11300'])
end
def stop
super
@beanstalk.close
end
def run
loop do
begin
job = @beanstalk.reserve(2)
rescue Beanstalk::TimedOut
end
if job
logger.info "(#{Process.ppid}:#{Process.pid}) got job: #{job.inspect}"
# process job here ...
job.delete
end
heartbeat!
end
end
end
ROOT_DIR = File.expand_path('~')
# Raemon::Master.start 3, JobWorker, {
# :detach => true,
# :logger => Logger.new("#{ROOT_DIR}/beanstalk.log"),
# :pid_file => "#{ROOT_DIR}/beanstalk.pid"
# }
Raemon::Master.start 3, JobWorker
|