AsyncService provides an abstraction for workers/daemons that processes work from a queue. Often an AsyncService::Worker will get work from a queue, process it and push the result back into another queue.
You can also take a look at SyncService which provides abstractions for synchronous SOA.
$ gem install async_service
class CalculatorMachine < AsyncService::Worker
# You need to set a service name
@service_name = 'in.mobme.calculator_machine'
# This function is called on run
def work
loop do
queue.remove("work_queue") do |item|
result = item[:a] + item[:b]
queue.add("result_queue", result)
end
sleep 5
end
end
end
calculator = CalculatorMachine.new
calculator.run