Sha256: c35d9e32d754853e86729aea26b94d5d98703a2f18a4fb60c36a017750e161c5
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
module Appfuel module Service class Worker include Sneakers::Worker include Appfuel::Application::AppContainer include Appfuel::Application::Dispatcher class << self def inherited(klass) container = klass.app_container consumer_key = "#{klass.top_container_key}.consumer_keys" unless container.key?(consumer_key) container.register(consumer_key, []) end key = klass.container_class_path container.register(key, klass) container[consumer_key] << key end def top_container_key "message_brokers" end def container_class_type 'consumers' end end # Sneakers worker hook to handle messages from RabbitMQ # # # @param msg [String] JSON string of inputs # @param delivery_info [Bunny::Delivery::Info] # @param properties [Bunny::MessageProperties] # @return [Appfuel::Response] def work_with_params(msg, delivery_info, properties) container = app_container request = create_request(msg, delivery_info, properties) response = dispatch(request, container) if request.rpc? publish_rpc(request, response) end ack! response end # Publish a response for the rpc request. # # @param request [MsgRequest] # @param respons [Appfuel::Response] # @return [Nil] def publish_rpc(request, response) options = { correlation_id: request.correlation_id, routing_key: request.reply_to, headers: { "action_route" => request.action_route } } publish(response.to_json, options) nil end private def create_request(msg, delivery_info, properties) Appfuel::Service::MsgRequest.new(msg, delivery_info, properties) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
appfuel-service-0.1.4 | lib/appfuel/service/worker.rb |