基于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,得到以下内容,則證明服務降級實驗成功:
