class Appfuel::Service::MsgRequest
Attributes
delivery_info[R]
properties[R]
Public Class Methods
new(msg, delivery_info, properties)
click to toggle source
metadata properties
headers: message headers action_route [String] reply_to: name of rpc response queue correlation_id: id used in rpc to match response
@param msg String serialized message from rabbitmq @param delivery_info
Hash info used to acknowledge messages @param properties Object properties of the messages
@return MsgRequest
Calls superclass method
# File lib/appfuel/service/msg_request.rb, line 17 def initialize(msg, delivery_info, properties) inputs = validate_inputs(msg) action_route = properties.headers['action_route'].to_s @properties = properties @delivery_info = delivery_info super(action_route, inputs) end
Public Instance Methods
action_route?()
click to toggle source
# File lib/appfuel/service/msg_request.rb, line 43 def action_route? !action_route.empty? end
correlation_id()
click to toggle source
# File lib/appfuel/service/msg_request.rb, line 39 def correlation_id properties.correlation_id end
reply_to()
click to toggle source
# File lib/appfuel/service/msg_request.rb, line 35 def reply_to properties.reply_to end
rpc?()
click to toggle source
Rpc requires a reply queue to respond to and a correlation_id
to identify that response in the queue. When these two things exist then the request is consided to be an rpc
@return [Boolean]
# File lib/appfuel/service/msg_request.rb, line 31 def rpc? !reply_to.nil? && !correlation_id.nil? end
Private Instance Methods
validate_inputs(msg)
click to toggle source
# File lib/appfuel/service/msg_request.rb, line 48 def validate_inputs(msg) msg = msg.to_s return {} if msg.empty? begin inputs = JSON.parse(msg) fail "message inputs must be a hash" unless inputs.is_a?(Hash) inputs.deep_symbolize_keys rescue => e msg = "message request could not parse the inputs: #{e.message}" error = RuntimeError.new(msg) error.set_backtrace(e.backtrace) raise error end end