package com.sf.eurekaclientdemo1.config; import com.sf.eurekaclientdemo1.mylb.ItxsRandomLoadBalancerClient; import org.springframework.beans.factory.ObjectProvider; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.loadbalancer.core.RandomLoadBalancer; import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer; import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer; import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier; import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; @Configuration public class LoadBalancerConfig { // 切换成随机负载均衡器 默认是轮询负载均衡器 @Bean public ReactorLoadBalancer randomLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) { String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME); return new RandomLoadBalancer( loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name); } //自定义的负载均衡器 // @Bean // public ReactorServiceInstanceLoadBalancer custonRandomLoadBalancer( // ObjectProvider serviceInstanceListSupplierProvider){ // return new ItxsRandomLoadBalancerClient(serviceInstanceListSupplierProvider); // } }