public static IOcelotBuilder AddGracefullLoadBalancer(this IOcelotBuilder builder) { GracefulLoadBalancerDelegatingHandler delegatingHandler = null; builder.Services.AddTransient <GracefulLoadBalancerDelegatingHandler>(); builder.Services.AddTransient(s => { delegatingHandler = s.GetService <GracefulLoadBalancerDelegatingHandler>(); // Make this handler global. return(new GlobalDelegatingHandler(delegatingHandler)); }); Func <IServiceProvider, DownstreamRoute, IServiceDiscoveryProvider, GracefulLoadBalancer> loadBalancerFactoryFunc = (serviceProvider, route, serviceDiscoveryProvider) => { return(new GracefulLoadBalancer(serviceProvider, route, serviceDiscoveryProvider.Get)); }; builder.AddCustomLoadBalancer(loadBalancerFactoryFunc); return(builder); }
public static IOcelotBuilder AddRankingLoadBalancer(this IOcelotBuilder ocelot) { ocelot.AddCustomLoadBalancer((Route, serviceDiscoveryProvider) => new RankingLoadBalancer(serviceDiscoveryProvider.Get)); return(ocelot); }