lib/woodhouse/runners/hot_bunnies_runner.rb in woodhouse-0.1.2 vs lib/woodhouse/runners/hot_bunnies_runner.rb in woodhouse-0.1.5
- old
+ new
@@ -17,51 +17,54 @@
raise err
}
end
def subscribe
+ status :spinning_up
client = HotBunnies.connect(@config.server_info)
channel = client.create_channel
channel.prefetch = 1
queue = channel.queue(@worker.queue_name)
exchange = channel.exchange(@worker.exchange_name, :type => :headers)
queue.bind(exchange, :arguments => @worker.criteria.amqp_headers)
worker = Celluloid.current_actor
+ status :subscribed
queue.subscribe(:ack => true).each(:blocking => false) do |headers, payload|
+ status :receiving
begin
job = make_job(headers, payload)
if can_service_job?(job)
if service_job(job)
headers.ack
else
headers.reject
end
else
- @config.logger.error("Cannot service job #{job.describe} in queue for #{@worker.describe}")
+ status :rejected
headers.reject
end
+ status :subscribed
rescue => err
+ status :error
begin
- @config.logger.error("Error bubbled up out of worker. This shouldn't happen. #{err.message}")
- err.backtrace.each do |btr|
- @config.logger.error(" #{btr}")
- end
headers.reject
ensure
worker.bail_out(err)
end
end
end
wait :spin_down
+ status :closing
ensure
client.close
end
def spin_down
signal :spin_down
end
def bail_out(err)
+ status :bailing_out, "#{err.class}: #{err.message}"
raise Woodhouse::BailOut, "#{err.class}: #{err.message}"
end
private