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