• spring cloud(断路器——初学五)


    Feign使用Hystrix

      因为feign已经依赖了hystrix,所以可以直接使用,无需添加再次添加依赖。

      1、使用@FeignClient注解中的fallback属性指定回调类

    package com.daqsoft;
    
    import org.springframework.cloud.netflix.feign.FeignClient;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    
    /**
     * @Description Created by liaoxx on 2017-6-12.
     */
    @FeignClient(value = "compute-service", fallback = ComputeClientHystrix.class)
    public interface ComputerClient {
        @RequestMapping(method = RequestMethod.GET, value = "/add")
        Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b);
    }

      2、创建回调类ComputeClientHystrix,实现@FeignClient的接口,此时实现的方法就是对应@FeignClient接口中映射的fallback函数

    package com.daqsoft;
    
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.RequestParam;
    
    /**
     * @Description Created by liaoxx on 2017-6-13.
     */
    @Component
    public class ComputeClientHystrix implements ComputerClient {
        @Override
        public Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b) {
            return -1;
        }
    }

      3、web调用

    package com.daqsoft;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @Description Created by liaoxx on 2017-6-12.
     */
    @RestController
    public class CustomController {
    
        @Autowired
        private ComputerClient computerClient;
    
        @RequestMapping(value = "/add", method = RequestMethod.GET)
        public Integer add(){
            return computerClient.add(10,20);
    
        }
    }

      4、启动服务,访问http://localhost:3333/add

      

      报错,无法进入回调

      5、修改配置文件,添加属性

    spring.application.name=ribbon-consumer
    
    server.port=3333
    #服务注册中心地址
    eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

    #开启hystrix支持 feign.hystrix.enabled=true

      6、再次启动服务,访问http://localhost:3333/add (正常访问回调方法)

      

      

  • 相关阅读:
    Button 的CommandName 用法
    如何循序渐进向DotNet架构师发展
    用sqlserver进行分布式查询(链接服务器)(转)
    关于.resx
    OO设计原则总结
    为ASP.NET 2.0网站生成唯一程序集
    依赖倒置、控制反转和依赖注入辨析(转)
    通过http地址获取页面内容
    Sql同表去除重复
    动态启动WCF服务
  • 原文地址:https://www.cnblogs.com/liao-xx/p/6999899.html
Copyright © 2020-2023  润新知