public RoutingModel(string serviceKey, IBusModel bus, IRpcModel rpc)
        {
            _serviceKey = serviceKey;
            _bus        = bus;
            _rpc        = rpc;

            _serviceHealthEndpoint = new Lazy <Task <string> >(InitializeHealthEndpointAsync);
        }
        public BusinessLogic(IBusModel bus, IRpcModel rpc, Logger logger)
        {
            _bus = bus;
            _rpc = rpc;

            _tracker = new ServiceHealthTracker(rpc, logger);
            _router  = new Router <RoutingData>(new CompositeRouteSelectionStrategy <RoutingData>(
                                                    new MatchingRoutesSelectionStrategy <RoutingData>(),
                                                    new TopScoringRoutesSelectionStrategy <RoutingData>(new RouteScoreComparer()),
                                                    new WeightedRandomRouteSelectionStrategy <RoutingData>(x => _tracker.GetServiceCount(x.ServiceKey))
                                                    ));

            _logger = logger;
        }