Hystrix服務降級實現
1. 因爲Feign中集成了hystrix,所以不用添加以下依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
2. 自定義一個FallbackFactory類,實現FallbackFactory接口,在FallbackFactory接口上加上你的Service泛型
@Component //這個地方一定要記得加註解
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService> {
@Override
public DeptClientService create(Throwable throwable) {
return new DeptClientService() {
@Override
public JsonData add(String name) {
return getJsonData();
}
@Override
public JsonData get(Long deptId) {
return getJsonData();
}
@Override
public JsonData list() {
return getJsonData();
}
private JsonData<Object> getJsonData() {
JsonData<Object> objectJsonData = new JsonData<>();
objectJsonData.setCode(400);
objectJsonData.setMsg("服務降級,當前服務已關閉");
objectJsonData.setTimestamp(new Date().getTime());
objectJsonData.setData(null);
return objectJsonData;
}
};
}
}
3. 在@FeignClient註解中註明你自定義的fallbackFactory類
@FeignClient(value = "providerName", fallbackFactory = DeptClientServiceFallbackFactory.class)
4. application.yml中添加配置
feign:
hystrix:
enabled: true
做了這些以後,就算我們的provider已經down了,但是我們做了服務降級處理,讓客戶端在服務不可用時也會得到可處理的提示信息,而不會掛起,甚至於耗死服務器。