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
Creating a Worker
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