You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/**
* Ribbon 自定义规则
*/
@Configuration
public class MyRuleConfig {
@Bean
public IRule getRule(){
return new GrayReleaseRule();
}
}
然后在代码中调用的地方增加以下配置:
@Configuration
@RibbonClient(name="netflix-ribbon-consumer", configuration=MyRuleConfig.class) //name:建议写服务名称 configuration:配置类
public class CloudProviderConfig {
}
2、在配置文件中配置
分两步,首先注册我们的IRule对象,如下:
/**
* Ribbon 自定义规则
*/
@Configuration
public class MyRuleConfig {
@Bean
public IRule getRule(){
return new GrayReleaseRule();
}
}
Spring Cloud Ribbon 定义了
com.netflix.loadbalancer.IRule
接口,我们可以根据业务场景自定义规则。定义完规则后有2种配置方式,第一种是通过代码配置,第二种是通过配置文件;
自定义IRule
自定义GrayReleaseRule类,继承自AbstractLoadBalancerRule,代码如下:
具体实现可以参考 spring-cloud-starter-alibaba-nacos-discovery 模块中实现的
com.alibaba.cloud.nacos.ribbon.NacosRule
,其目标是 同集群调用优先。使用自定义IRule
有两种配置方式可选。
1、注解配置
然后在代码中调用的地方增加以下配置:
2、在配置文件中配置
分两步,首先注册我们的IRule对象,如下:
然后,我们在application.yml文件 增加配置,格式:``` .ribbon.```` ,
本文中配置如下:
验证规则
首先 我们在 spring-cloud-netflix-ribbon-provider 的 application.yml文件中 增加元数据:
然后,我们将 spring-cloud-netflix-ribbon-02-consumer application.yml文件增加一个 元数据配置:
源码下载:https://github.com/TFdream/spring-cloud-tutorials/tree/master/spring-cloud-netflix-ribbon
The text was updated successfully, but these errors were encountered: