1.RestTemplate负载均衡注解
@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder){
return builder.build();
}
这个注解需要maven单独添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
2.设置负载均衡算法
默认是轮询
设置为随机请求
1.在@ComponentScan扫描范围外添加新的配置类
@Configurable
public class RibbonRoundomRuleConfig {
@Bean
/*
* 方法名一定要和类名一致
*
* 这个类不用放在ComponentScanner的目录中
* 否则回被其他的服务提供者共享规则
*
* spring cloud 2022.0舍弃Ribbon后的写法
* */
public ReactorLoadBalancer<ServiceInstance> reactorLoadBalancer(
Environment environment,
LoadBalancerClientFactory loadBalancerClientFactory
){
String name=environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
return new RandomLoadBalancer(
loadBalancerClientFactory.getLazyProvider(
name,
ServiceInstanceListSupplier.class
),
name
);
}
}
2.在启动类中添加配置
@SpringBootApplication
@LoadBalancerClients(defaultConfiguration = RibbonRoundomRuleConfig.class)
public class Order0Application {
public static void main(String[] args) {
SpringApplication.run(Order0Application.class,args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder builder){
return builder.build();
}
}