SpringCloud(七):Ribbon自定义配置
来源:互联网 发布:alias软件下载 编辑:程序博客网 时间:2024/06/14 12:34
从上篇博客我们可以看到,Ribbon默认的负载均衡策略为轮询。如果想自定义改如何配置,小编将在这篇博客带你一步一步完成自定义配置。
在上篇的项目基础上做更改。
一、编写一个注解ExcludeFromComponentScan.java
package com.itmuch.cloud;public @interface ExcludeFromComponentScan {}
二 、编写一个TestConfiguration.java,将负载均衡策略变为随机
package com.itmuch.cloud;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.netflix.client.config.IClientConfig;import com.netflix.loadbalancer.IRule;import com.netflix.loadbalancer.RandomRule;@Configuration@ExcludeFromComponentScanpublic class TestConfiguration {@AutowiredIClientConfig config;@Bean public IRule ribbonRule(IClientConfig config){return new RandomRule();}}public class TestConfiguration {@AutowiredIClientConfig config;@Bean public IRule ribbonRule(IClientConfig config){return new RandomRule();}}
三、修改启动类ConsumerMovieRibbonApplication.java
在类上添加两个注解:
@RibbonClient(name="microservice-provider-user",configuration = TestConfiguration.class)@ComponentScan(excludeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION,value=ExcludeFromComponentScan.class)})
四、在Controller中添加测试代码:
@Autowiredprivate LoadBalancerClient LoadBalancerClient;@GetMapping("/test")public String test() {ServiceInstance serviceInstance = this.LoadBalancerClient.choose("microservice-provider-user");System.out.println("111"+serviceInstance.getHost()+":"+serviceInstance.getPort()+":"+serviceInstance.getServiceId());ServiceInstance serviceInstance2 = this.LoadBalancerClient.choose("microservice-provider-user2");System.out.println("222"+serviceInstance2.getHost()+":"+serviceInstance2.getPort()+":"+serviceInstance2.getServiceId());return "1";}
五、启动
先启动eureka,再启动四个提供者实例,7900,7901,7902(user2),7903(user2),修改application.yml即可。最后启动消费者。启动成功界面:
六、访问页面:localhost:8010/test,刷新八次。
小结
到这里,自定义配置的展示就完成了。其中的知识点总结一下。
1、扫描包的排除:
@Configuration这个注解是不能@SpringBootApplication的所在扫描到的,否则将自定义的配置将失效。所以需要将TestConfiguration.java排除在包扫描之外,用自定义的注解@ExcludeFromComponentScan,然后在启动类加注解@ComponentScan(excludeFilters{@ComponentScan.Filter(type=FilterType.ANNOTATION,value=ExcludeFromComponentScan.class)})将其排除。
2、自定义负载均衡策略的更换。
@Bean public IRule ribbonRule(IClientConfig config){return new RandomRule();}这里是关键,还可以换成其它负载均衡策略。
完整的项目源码将在后面分享,敬请期待。。。
阅读全文
0 0
- SpringCloud(七):Ribbon自定义配置
- 【SpringCloud】(七):自定义Ribbon
- SpringCloud(八):使用配置文件自定义Ribbon
- SpringCloud(五):Ribbon了解
- SpringCloud(六):Ribbon示例
- SpringCloud之Ribbon(一)
- SpringCloud之Ribbon(二)
- SpringCloud(四)Ribbon自定义负载均衡
- SpringCloud(五)Ribbon自定义负载均衡插件
- SpringCloud(四)Ribbon自定义负载均衡
- 【SpringCloud】(九):Feign的自定义配置
- springcloud学习(三)之Ribbon
- SpringCloud--服务消费者(rest+ribbon)
- SpringCloud: 服务消费者(rest+ribbon)
- springcloud入门之服务消费者(ribbon)
- springcloud(第六篇)springcloud ribbon
- Springcloud consul + ribbon\feign
- SpringCloud第二篇-Ribbon:
- httpPost一直 500,未将对象引用设置到对象的实例
- mybatis源码解析之SqlSession接口。
- VS2013+OpenGL配置
- 矩阵快速幂 -- 兔子繁殖(也就是斐波那契数列啦)
- 海量数据处理
- SpringCloud(七):Ribbon自定义配置
- 析构函数和构造函数的注意事项
- Python 多线程(高级教程)
- ThingInJava-IO笔记(NIO)
- 动态规划专题讲义之最大连续子序列之和
- elasticsearch实用篇之kibana安装以及使用
- Struts2中的ActionContext和ServletActionContext的区别
- POJ--1631
- Python XML解析(高级教程)