SpringCloud_Hystrix服務降級

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了,但是我們做了服務降級處理,讓客戶端在服務不可用時也會得到可處理的提示信息,而不會掛起,甚至於耗死服務器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章