欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

feign集成Hystrix

程序员文章站 2022-07-10 17:31:23
介绍以上案例只有一个方法,所有直接把降级方法放到了消费者了conroller中如果项目中有很多不同的服务,不同的服务又有不同的方法,以上方法就显得很冗余解决方法就是在feign内继承Hystrixfeign集成Hystrix代码实现在api_service服务接口内新建一个fallback文件夹存放指定接口方法的降级方法@Component//需要继承接口public class UserFeignFallBack implements UserFeign { @Overr....
  • 介绍
    • 以上案例只有一个方法,所有直接把降级方法放到了消费者了conroller中
    • 如果项目中有很多不同的服务,不同的服务又有不同的方法,以上方法就显得很冗余
    • 解决方法就是在feign内继承Hystrix

feign集成Hystrix代码实现

  1. 在api_service服务接口内新建一个fallback文件夹存放指定接口方法的降级方法
    @Component//需要继承接口
    public class UserFeignFallBack implements UserFeign {
    
        @Override
        public User findByUserName(String userName) {
            User user = new User();
            user.setName("-1");
            user.setNickName("暂停服务-feignFallBack");
            return user;
        }
    }
    
  2. 原接口的@FeignClient客户端注解需要加入fallback属性
    @FeignClient(value = "user-service",fallback = UserFeignFallBack.class)
    public interface UserFeign {
    
        @GetMapping("/user/{userName}")
        public User findByUserName(@PathVariable("userName") String userName);
    }
    
  3. 注释掉原消费者controller中的降级方法和注解
    @RestController
    @RequestMapping(value = "feign")
    public class FeignController {
    
        @Autowired
        private UserFeign userFeign;
    
        @GetMapping("{userName}")
    //    @HystrixCommand(fallbackMethod = "findByUserNameFallBack")
        public User findByUserName(@PathVariable("userName") String userName){
            return userFeign.findByUserName(userName);
        }
    
        //降级方法
    //    public User findByUserNameFallBack(String userName){
    //        User user = new User();
    //        user.setName("-1");
    //        user.setNickName("暂停服务");
    //        return user;
    //    }
    }
    
  4. 把开启feign开启hystrix服务降级的配置放入消费者的yml文件中
    feign:
      hystrix:
        enabled: true # 开启Feign的熔断功能
    
  5. 在user_service加入手工模拟异常测试即可

本文地址:https://blog.csdn.net/weixin_43948783/article/details/110289433

相关标签: 自记自用