【发布时间】:2021-12-21 11:02:08
【问题描述】:
我想为 Spring Cloud LoadBalancerClient(包 org.springframework.cloud.client.loadbalancer.LoadBalancerClient)做我自己的配置。但是没有应用配置,默认使用Round Robin。
谁能进一步帮助我?
public class CustomLoadBalancerConfiguration {
@Bean
ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
LoadBalancerClientFactory loadBalancerClientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
return new RandomLoadBalancer(loadBalancerClientFactory
.getLazyProvider(name, ServiceInstanceListSupplier.class),
name);
}
}
public class Client {
@Autowired
private LoadBalancerClient loadBalancerClient;
@LoadBalanced
private RestTemplate restTemplate = new RestTemplate();
private String getBaseUrl() {
ServiceInstance serviceInstance = loadBalancerClient.choose("eventService");
System.out.println(serviceInstance);
return serviceInstance.getUri().toString();
}
@GetMapping("/all")
public String getAll() throws JsonProcessingException {
String url = getBaseUrl()+"/xx";
return restTemplate.getForObject(url, String.class);
}
}
【问题讨论】:
标签: spring spring-boot configuration load-balancing