去查询我们的ribbon会发现有一个接口IRule,然后去查看(快捷键CTRL+H)下IRule的实现类,发现有其他的轮询规则:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201009110153983.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMzg4ODUz,size_16,color_FFFFFF,t_70#pic_center)
然后再去ribbon官方查看,发现不能把自定义负载均衡方法放自动配置类下,所以我们需要自己去建立一个目录用来存放均衡规则。
这是我的目录
然后我们在myrule的package下创建类MySelfRule:
代码如下
package com.zsp.myrule;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class MySelfRule {
@Bean
public IRule getRule(){
return new RandomRule();
}
}
最后,去主启动类里面开启
@RibbonClient(name = “CLOUD-PAYMENT-SERVICE”,configuration = MySelfRule.class)
package com.zsp.springcloud;
import com.zsp.myrule.MySelfRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MySelfRule.class)
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class,args);
}
}
效果:第一次刷新
第二次刷新
第三次刷新
说明我们更换负载均衡为随机策略成功