微服务熔断配置

微服务架构搭建熔断有三种方式。
第一种:
1、引入pom.xml依赖:

<!-- 熔断 -->
<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

2、在启动类上加上注解:@EnableHystrix
3、声明接口:

@HystrixCommand(fallbackMethod = "selectByIdError")
@RequestMapping("/getuser")
public ResponseResult selectById(int id) {
  return userService.selectById(id);
}

public ResponseResult selectByIdError(int id){
    return new ResponseResult(10000,"内部服务出现异常",null);
}

第二种
1、引入熔断依赖
2、Feign自带熔断,需要手动打开

feign:
  hystrix:
    enabled: true

3、定义Fallback类实现feign接口

@Component
@Slf4j
public class OrderClientFallback implements UserService{
    @Override
    public void updatePoint(int price, int id) {
        log.info("======进入熔断处理======");
        log.info("调用用户服务的更新积分API失败");
    }

    @Override
    public ResponseResult<User> selectById(int id) {
        return null;
    }
}

第三种
1、引入熔断依赖
2、Feign自带熔断,需要手动打开
3、定义一个熔断工厂类实现FallbackFactory接口,并定义好需要熔断处理的Feign接口泛型。

@Component
@Slf4j
public class OrderClientFallbackFactory implements FallbackFactory<UserService> {
    @Override
    public UserService create(Throwable cause) {
        //打印熔断原因
        cause.printStackTrace();
        //返回一个工厂类型对象
        return new UserService(){
            @Override
            public void updatePoint(int price, int id) {
                log.info("======进入熔断处理======");
                log.info("调用用户服务的更新积分API失败");
            }

            @Override
            public ResponseResult<User> selectById(int id) {
                return null;
            }
        };
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容