Springcloud中Ribbon的使用
程序员文章站
2022-06-22 16:20:11
...
1.导入依赖
- Eureka中包含了Ribbon的依赖,可以不用导入Ribbon
- 如果不是Eureka注册中心,那就再导入Ribbon
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
2.定义负载均衡的策略
- 官方明确说明Ribbon负载均衡的策略不要放在@ComponentScan所能扫描的包及其子包下面
- 也就是说不能放在主启动类所在的包及其子包
在主启动类包外建立新的包
注册到spring容器,并返回轮询方法
@Configuration
public class MySelfRibbon {
@Bean
public IRule getRule(){
return new RandomRule(); // 这里返回的是随机轮询
}
}
主启动类添加注解:1.实现负载均衡的服务名称(注册到eureka中的) 2.规定实现轮询的方法的类
这里实现负载均衡使用的是restTemplate
@Configuration
public class RestTempleConfig {
@Bean
@LoadBalanced //实现负载均衡的方式
public RestTemplate getReStTemplate(){
return new RestTemplate();
}
}
实现服务的调用
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
private static final String URL="http://CLOUD-PAYMENT";
@Resource
private RestTemplate restTemplate;
@GetMapping("/payment/create")
public CommentResult<Payment> create(Payment payment){
return restTemplate.postForObject(URL+"/payment/create",payment, CommentResult.class);
}
}
上一篇: Ribbon之轮询源码分析