class GorgService::Consumer::MessageRouter
Public Class Methods
delete_routes_of(message_handler)
click to toggle source
# File lib/gorg_service/consumer/message_router.rb, line 25 def delete_routes_of(message_handler) routes.reject!{|_k,v|v==message_handler} end
listened_keys()
click to toggle source
# File lib/gorg_service/consumer/message_router.rb, line 29 def listened_keys routes.keys end
message_handler_for(routing_key)
click to toggle source
# File lib/gorg_service/consumer/message_router.rb, line 33 def message_handler_for routing_key @routes.each do |k, mh| return mh if amqp_key_to_regex(k).match(routing_key) end false end
new(message)
click to toggle source
# File lib/gorg_service/consumer/message_router.rb, line 8 def initialize(message) message_handler=self.class.message_handler_for message.routing_key raise HardfailError.new("Routing error : No message handler found for this routing key") unless message_handler message_handler.new(message) end
register_route(routing_key, message_handler)
click to toggle source
# File lib/gorg_service/consumer/message_router.rb, line 21 def register_route(routing_key, message_handler) routes[routing_key]=message_handler end
routes()
click to toggle source
# File lib/gorg_service/consumer/message_router.rb, line 17 def routes @routes||={} end
Private Class Methods
amqp_key_to_regex(key)
click to toggle source
# File lib/gorg_service/consumer/message_router.rb, line 42 def amqp_key_to_regex(key) regex_base=key.gsub('.', '\.') .gsub('*', '([a-zA-Z0-9\-_:]+)') .gsub(/(\\\.)?#(\\\.)?/, '((\.)?[a-zA-Z0-9\-_:]*(\.)?)*') /^#{regex_base}$/ end