class GorgService::Consumer::MessageHandler::Base
Public Class Methods
handle_error(*errorClasses,&block)
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 99 def handle_error(*errorClasses,&block) GorgService::Consumer::MessageHandler::ExceptionManager.instance.set_rescue_from(*errorClasses,&block) end
listen_to(routing_key)
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 103 def listen_to(routing_key) MessageRouter.register_route(routing_key, self) end
new(message)
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 8 def initialize(message) @message=message GorgService::Consumer::MessageHandler::ExceptionManager.instance.with_exception_rescuing(self.message) do begin validate rescue GorgService::Message::DataValidationError => e raise_hardfail("DataValidationError",error: e.errors) end process end end
raise_hardfail(error_message,message:nil, error: nil, data: nil, status_code: 500, error_name: nil)
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 65 def raise_hardfail(error_message,message:nil, error: nil, data: nil, status_code: 500, error_name: nil) if message reply_to(message,{ error_type: 'hardfail', status_code: status_code, error_name: error_name, data:{ error_message: error_message, debug_message: error&&error.inspect, error_data: data }, }) end raise HardfailError.new(error_message, error, gorg_service_message: message, error_name: error_name) end
raise_softfail(error_message,message:nil, error: nil, data: nil, status_code: 500, error_name: nil)
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 82 def raise_softfail(error_message,message:nil, error: nil, data: nil, status_code: 500, error_name: nil) if message reply_to(message,{ error_type: 'softfail', next_try_in: GorgService.configuration.rabbitmq_deferred_time.to_i, status_code: status_code, error_name: error_name, data:{ error_message: error_message, debug_message: error&&error.inspect, error_data: data }, }) end raise SoftfailError.new(error_message, error, gorg_service_message: message, error_name: error_name) end
reply_to(message, data: {}, status_code: 200, error_type: nil, error_name: nil, next_try_in: nil)
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 49 def reply_to(message, data: {}, status_code: 200, error_type: nil, error_name: nil, next_try_in: nil) if message.expect_reply? reply=message.reply_message( data: data, status_code: status_code, error_type: error_type, error_name: error_name, next_try_in: next_try_in, ) replier=GorgService::Producer.new replier.publish_message(reply,exchange: message.reply_to) end end
reset_listen_to!()
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 107 def reset_listen_to! MessageRouter.delete_routes_of(self) end
Public Instance Methods
message()
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 30 def message @message end
Also aliased as: msg
process()
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 26 def process GorgService.logger.warn "WARNING : You must define your MessageHandler behavior in #process" end
raise_hardfail(*args, **keyword_args)
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 39 def raise_hardfail(*args, **keyword_args) self.class.raise_hardfail(*args, **(keyword_args.merge(message:message))) end
raise_softfail(*args, **keyword_args)
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 43 def raise_softfail(*args, **keyword_args) self.class.raise_softfail(*args, **(keyword_args.merge(message:message))) end
reply_with(*_args, **keyword_args)
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 35 def reply_with(*_args, **keyword_args) self.class.reply_to(message,**keyword_args) end
validate()
click to toggle source
# File lib/gorg_service/consumer/message_handler/base.rb, line 22 def validate GorgService.logger.warn "WARNING : No message schema validation in #{self.class.name}, implement it in #validate(message) " end