基于Spring Cloud (十一)、Feign参数绑定我们进行进行Feign服务降级的实验。
我们只需要修改服务消费者fegin-consume工程。
一、在application.properties配置文件中开启Hystrix功能
#指定服务名称 spring.application.name=feign-consumer #端口号 server.port=9001 #开启Hystrix功能 feign.hystrix.enabled=true #指定服务注册中心地址,多个注册中心以,隔开 eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
二、为Feign客户端的定义接口编写一个具体的接口实现类,比如为HelloService接口实现一个服务降级类HelloServicFallback,其中每个重写方法的实现逻辑都可以用来定义相应的服务降级逻辑。具体如下:
@Component
public class HelloServiceFallback implements HelloService {
@Override
public String hello() {
return "error";
}
@Override
public String hello(String name) {
return "error";
}
@Override
public User hello(String name, Integer age) {
return new User("未知",0);
}
@Override
public String hello(User user) {
return "error";
}
}
三、在服务绑定接口HelloService中,通过@FeignClient注解的failback属性来指定对应的服务降级实现类。
@FeignClient(value = "hello-service",fallback = HelloServiceFallback.class)
@Service
public interface HelloService {
@RequestMapping("/hello")
String hello();
@RequestMapping("/hello1")
String hello(@RequestParam("name") String name);
@RequestMapping("/hello2")
User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age);
@RequestMapping("/hello3")
String hello(@RequestBody User user);
}
四、测试验证
我们来启动eureka-service、fegin-consume,不启动hello-service,访问http://localhost:9001/feign-consume2,得到以下内容,则证明服务降级实验成功: