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了,但是我们做了服务降级处理,让客户端在服务不可用时也会得到可处理的提示信息,而不会挂起,甚至于耗死服务器。

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