springcloud整合feign

第一种:

1.添加依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2.在消费端添加代理

//DepartFeignFallBackFactory 服务降级使用
@FeignClient(value = "provider-test",fallbackFactory = DepartFeignFallBackFactory.class)
@RequestMapping("/provider/depart")
public interface DepartFeign {
    @PostMapping("/save")
    public boolean saveHandler(@RequestBody Depart depart);

    @DeleteMapping("/del/{id}")
    public boolean delHandler(@PathVariable("id") Integer id);

    @PutMapping("/update")
    public boolean updateHandler(@RequestBody Depart depart);

    @GetMapping("/get/{id}")
    public Depart getHandler(@PathVariable("id") Integer id);

    @GetMapping("/list")
    public List<Depart> listHandler();
}

 3.服务降级处理类

@Component
public class DepartFeignFallBackFactory implements FallbackFactory<DepartFeign> {
    @Override
    public DepartFeign create(Throwable throwable) {
        return new DepartFeign() {
            @Override
            public boolean saveHandler(Depart depart) {
                System.out.println("执行saveHandler降级的方法");
                return false;
            }

            @Override
            public boolean delHandler(Integer id) {
                System.out.println("执行delHandler降级的方法");
                return false;
            }

            @Override
            public boolean updateHandler(Depart depart) {
                System.out.println("执行updateHandler降级的方法");
                return false;
            }

            @Override
            public Depart getHandler(Integer id) {
                System.out.println("执行getHandler降级的方法");
                return null;
            }

            @Override
            public List<Depart> listHandler() {
                System.out.println("执行listHandler降级的方法");
                return null;
            }
        };
    }
}

  4.配置文件

feign:
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 5000
  hystrix:
    enabled: true
  circuitbreaker:
    enabled: true

provider-test:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #负载均衡策略

  第二种

1.添加依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2.在消费端添加代理

//DepartFeignFallBackFactory 服务降级使用
@FeignClient(value = "provider-test",fallback = DepartFeignFallBackFactory.class)//注意这里使用的是fallback而不是fallbackfactory
@RequestMapping("/provider/depart")
public interface DepartFeign {
    @PostMapping("/save")
    public boolean saveHandler(@RequestBody Depart depart);

    @DeleteMapping("/del/{id}")
    public boolean delHandler(@PathVariable("id") Integer id);

    @PutMapping("/update")
    public boolean updateHandler(@RequestBody Depart depart);

    @GetMapping("/get/{id}")
    public Depart getHandler(@PathVariable("id") Integer id);

    @GetMapping("/list")
    public List<Depart> listHandler();
}

 3.服务降级处理类

@Component
@RequestMapping("/fallback/consumer/depart")//这个必须有,链接可以随意只要与其他链接不重复即可
public class DepartFeignFallBackFactory2 implements DepartFeign {
    @Override
    public boolean saveHandler(Depart depart) {
        System.out.println("执行saveHandler降级的方法");
        return false;
    }

    @Override
    public boolean delHandler(Integer id) {
        System.out.println("执行delHandler降级的方法");
        return false;
    }

    @Override
    public boolean updateHandler(Depart depart) {
        System.out.println("执行updateHandler降级的方法");
        return false;
    }

    @Override
    public Depart getHandler(Integer id) {
        System.out.println("执行getHandler降级的方法");
        return null;
    }

    @Override
    public List<Depart> listHandler() {
        System.out.println("执行listHandler降级的方法");
        return null;
    }
}

  

posted @ 2022-05-25 20:04  it_bky  阅读(141)  评论(0)    收藏  举报