4-2Ribbon 自定义请求策略 · SpringCloud微服务实战 · 看云
2. 如何自定义请求策略
导航
下面我们自定义负载请求的策略规则,新定义规则需要实现IRule并实现里面的方法,其中规则策略的实现是在choose(Object o)中。比如我们现在实现一个只取第一个注册到Eureka服务中的提供者实例。
本节代码地址
2.1 新建规则类
@Slf4j
public class MyRule implements IRule {
private ILoadBalancer loadBalancer;
@Override
public Server choose(Object o) {
List<Server> allServers = loadBalancer.getAllServers();
allServers.stream().forEach(server -> System.out.println(server.getHostPort()));
if(CollectionUtils.isEmpty(allServers)){
log.info("当前不存在负载调用的提供者实例");
return null;
}
return allServers.get(0);
}
@Override
public void setLoadBalancer(ILoadBalancer iLoadBalancer) {
this.loadBalancer=iLoadBalancer;
}
@Override
public ILoadBalancer getLoadBalancer() {
return this.loadBalancer;
}
}
2.2 修改EurekaRibbonConfig
路径在fw-cloud-ribbon中的com.yisu.ribbon.config.EurekaRibbonConfig中
我们只需要替换我们自己定义的负载规则
@Bean
public IRule ribbonRule() {
return new MyRule();
}
2.3 重启客户端
通过postman 重新请求localhost:8771/user/1
多请求几次,会发现返回的结构永远是第一次注册到Eureka服务上的提供者
