处理微服务 ribbon 调用服务时服务关闭后仍然可以调用问题
1.通过代码方式来配置之前自定义的负载策略,首先需要创建一个配置类,初始化自定义的策略
/**
* 该类为Ribbon的配置类
* 注意:该类不应该在主应用程序上下文的@ComponentScan中
*/
@Configuration
public class CloudRole {
/**
* 自定义调用规则(服务提供者掉线后不再调用,解决轮询问题)
* @return
*/
@Bean
public IRule myRule(){
return new RetryRule();
//return new RandomRule();
}
}

2.创建一个 Ribbon 客户端的配置类,关联CloudRole,用 name 来指定调用的服务名称,代码如下所示。
@RibbonClient(name = "service-ribbon", configuration = CloudRole.class)
public class RibbonClientConfig {
}

3.配置Spring Retry 重试,通过集成 Spring Retry 来进行重试操作。
3.1 在 pom.xml 中添加 Spring Retry 的依赖,代码如下所示。
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
配置重试次数等信息:
ribbon:
# 对当前实例的重试次数
maxAutoRetries: 1
# 切换实例的重试次数
maxAutoRetriesNextServer: 3
# 对所有操作请求都进行重试
okToRetryOnAllOperations: true
# 对Http响应码进行重试
retryableStatusCodes: 500,404,502


浙公网安备 33010602011771号