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