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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 (正常访问回调方法)

  技术分享

 

 

  



以上是关于spring cloud(断路器——初学五)的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud:Hystrix 监控面板Finchley 版

SpringCloud学习6(Spring Cloud Alibaba)断路器Sentinel熔断降级

Spring Cloud Hystrix 断路器

Spring Cloud 断路器 - 如何控制打开的 http 状态电路

spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护

Spring Cloud笔记 断路器-hystrix