zyt温柔发 发表于 2022-2-17 18:45

SpringCloud学习心得---降级机制

8.2服务降级机制
服务降级处理是在客户端(Consumer 端)实现完成的,与服务端(Provider 端)没有关系。
当某个 Consumer 访问一个 Provider 却迟迟得不到响应时执行预先设定好的一个解决方案,
而不是一直等待。

8.2.1 common 工程:依赖
```
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
```
8.2.2 common 工程 com.study.spring.cloud.factory.MyFallBackFactory
/**
* 1.实现Consumer端服务降级功能
* 2.实现FallbackFactory接口时要传入@FeignClient注解标记的接口类型
* 3.在create()方法中返回@FeignClient注解标记的接口类型的对象,当Provider调用失败后,会执行这个对象的对应方法
* 4.这个类必须使用@Component注解将当前类的对象加入IOC容器,当然当前类必须能够被扫描到
* @AuThor Lenovo
*
*/
@Component
public class MyFallBackFactory implements FallbackFactory<EmployeeRemoteService> {

        @Override
        public EmployeeRemoteService create(Throwable cause) {
                return new EmployeeRemoteService() {

                        @Override
                        public Employee getEmployeeRemote() {
                                return null;
                        }

                        @Override
                        public ResultEntity<Employee> getEmpWithCircuitBreaker(String signal) {
                                return ResultEntity.failed("降级机制生效:" + cause.getMessage());
                        }

                        @Override
                        public List<Employee> getEmpListRemote(String keyword) {
                                return null;
                        }
                };
        }

}

8.2.3 common 工程:Feign 接口添加:
@FeignClient(value = "study-provider", fallbackFactory = MyFallBackFactory.class)
8.2.4 consumer 工程:application.yml
```
feign:
hystrix:
enabled: true
```
8.2.4测试
正常访问:

provider停掉访问:

戰龍在野 发表于 2022-2-17 19:19

好高端谢谢提供好好学习了

shiqiangge 发表于 2022-2-17 20:24

感谢分享,学习了
页: [1]
查看完整版本: SpringCloud学习心得---降级机制