spring cloud 自定义ribbon实现负载均衡(二) 解决自定义ribbon和springboot启动类放在同一包下

在上一节中,我们说了,自定义UserDefineConfig自定的类不能放在com.ljf.weifuwu.springcloud.ribbon包下面,因为RibbonConsumerApp启动类有@ComponentScan这个注解,且在com.ljf.weifuwu.springcloud.ribbon这个包下面。
现在我们解决一下,如果放在同一个包下,怎么进行访问。

1.定义一个注解:ExcludeFromComponentScan,和启动类放在同一个包下

spring cloud 自定义ribbon实现负载均衡(二) 解决自定义ribbon和springboot启动类放在同一包下

2.将自定义的ribbon策略文件:config/UserDefineConfig放在com.ljf.weifuwu.springcloud.ribbon包下面:将文件中操作3步:

1.引入排除注解:@ExcludeFromComponentScan

2.注释掉:IClientConfig config;

3.ribbonRule(IClientConfig config)变为:ribbonRule()

spring cloud 自定义ribbon实现负载均衡(二) 解决自定义ribbon和springboot启动类放在同一包下

3.启动类添加,排除过滤注解:

@ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = ExcludeFromComponentScan.class)})

spring cloud 自定义ribbon实现负载均衡(二) 解决自定义ribbon和springboot启动类放在同一包下4.启动服务:

启动ms-eureka-sever(8761) , ms-ribbon-consumer(8001),ms-eureka-provider(7901 ),ms-eureka-provider(7900 ),ms-ribbon-provider(8002 ),ms-ribbon-provider(8003).

ms-eureka-provider:使用的是自定义的,随机策略,在启动类进行了配置:

@RibbonClient(name="ms-eureka-provider",configuration = UserDefineConfig.class)
ms-ribbon-provider:使用的是默认,轮询策略。

 

spring cloud 自定义ribbon实现负载均衡(二) 解决自定义ribbon和springboot启动类放在同一包下

5.访问:http://localhost:8001/usedefine-ribbon

2020-06-07 18:27:38.913  INFO 7296 --- [erListUpdater-1] c.netflix.config.ChainedDynamicProperty  : Flipping property: ms-ribbon-provider.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
随机::ms-eureka-provider:192.168.1.65:7901
轮询::ms-ribbon-provider:192.168.1.65:8003
随机::ms-eureka-provider:192.168.1.65:7900
轮询::ms-ribbon-provider:192.168.1.65:8002
随机::ms-eureka-provider:192.168.1.65:7901
轮询::ms-ribbon-provider:192.168.1.65:8003
随机::ms-eureka-provider:192.168.1.65:7900
轮询::ms-ribbon-provider:192.168.1.65:8002
随机::ms-eureka-provider:192.168.1.65:7900
轮询::ms-ribbon-provider:192.168.1.65:8003
随机::ms-eureka-provider:192.168.1.65:7900
轮询::ms-ribbon-provider:192.168.1.65:8002
随机::ms-eureka-provider:192.168.1.65:7900
轮询::ms-ribbon-provider:192.168.1.65:8003
随机::ms-eureka-provider:192.168.1.65:7901
轮询::ms-ribbon-provider:192.168.1.65:8002
随机::ms-eureka-provider:192.168.1.65:7900
轮询::ms-ribbon-provider:192.168.1.65:8003
随机::ms-eureka-provider:192.168.1.65:7900
轮询::ms-ribbon-provider:192.168.1.65:8002
随机::ms-eureka-provider:192.168.1.65:7901
轮询::ms-ribbon-provider:192.168.1.65:8003
随机::ms-eureka-provider:192.168.1.65:7901
轮询::ms-ribbon-provider:192.168.1.65:8002
随机::ms-eureka-provider:192.168.1.65:7901
轮询::ms-ribbon-provider:192.168.1.65:8003
随机::ms-eureka-provider:192.168.1.65:7900
轮询::ms-ribbon-provider:192.168.1.65:8002
随机::ms-eureka-provider:192.168.1.65:7901
轮询::ms-ribbon-provider:192.168.1.65:8003
2020-06-07 18:31:47.752  INFO 7296 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2020-06-07 18:36:47.760  INFO 7296 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration

通过观察:ms-eureka-provider:7900和7901,实现了随机;ms-ribbon-provider:8002和8003,实现了轮询操作。