Farmbot-Web-App/lib/rabbit_workers.rb

41 lines
845 B
Ruby

# :nocov:
require "thread"
require "thwait"
require_relative "../app/lib/resources.rb"
require_relative "../app/lib/resources/job.rb"
require_relative "../app/lib/resources/preprocessor.rb"
require_relative "../app/lib/resources/service.rb"
class RabbitWorker
WAIT = 3
def self.thread
Thread.new do
yield
rescue => e
puts "Connecting to broker in #{WAIT} seconds. (#{e.inspect})"
sleep WAIT
retry
end
end
def self.go!
t = Transport.current
loop do
ThreadsWait.all_waits([
thread { TelemetryService.new.go!(t.telemetry_channel) },
thread { LogService.new.go!(t.log_channel) },
thread { Resources::Service.new.go!(t.resource_channel) },
])
end
rescue
sleep RabbitWorker::WAIT
retry
end
end
sleep(RabbitWorker::WAIT * 2)
RabbitWorker.go!