栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloudAlibaba - Feign 整合 Sentinel

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloudAlibaba - Feign 整合 Sentinel

目录
  • 前言
    • 环境
  • 简单示例
    • content-center
    • user-center
    • 测试
  • 定制自己的逻辑处理
  • 限流/降级的异常捕捉

前言

记录下Feign整合Sentinel的方式
Feign的整合与Sentinel的整合查看系列文章


环境

Spring Cloud Hoxton.SR9 + Spring Cloud Alibaba 2.2.6.RELEASE + Sentinel 1.8.1


简单示例
  • 实现内容中心使用feign调用用户中心接口限流

content-center
  • application.yml
feign:
  sentinel:
    # 为 Feign 整合 Sentinel
    enabled: true
  • TestController.java
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class TestController {

	 private final TestFeignClient testFeignClient;

    @GetMapping("test6")
    public String test6() {
        return testFeignClient.test("Coisini");
    }
    
}
  • TestFeignClient.java
@FeignClient(name = "user-center")
public interface TestFeignClient {

    
    @GetMapping("/test/{name}")
    String test(@PathVariable String name);

}

user-center

TestController.java

@RestController
@Slf4j
public class TestController {

    @GetMapping("/test/{name}")
    public String test(@PathVariable String name) {
        log.info("请求...");
        return "hello " + name;
    }

}

测试
  • 调用接口


  • 通过簇点链路配置一条QPS为1的流控规则

  • 频繁访问接口触发流控



定制自己的逻辑处理
  • 可以通过@FeignClient的fallback属性定制自己的逻辑处理,也就是远程调用被流控了时的业务处理逻辑

  • TestFeignClient.java

@FeignClient(name = "user-center", fallback = TestFeignClientFallback.class)
  • TestFeignClientFallback.java
@Component
public class TestFeignClientFallback implements TestFeignClient {
    @Override
    public String test(String name) {
        // 业务逻辑
        return "流控/降级";
    }
}
  • 重新启动应用配置流控规则频繁访问接口触发流控



限流/降级的异常捕捉
  • 可以通过@FeignClient的fallbackFactory属性捕捉异常
  • TestFeignClient.java
@FeignClient(name = "user-center", fallbackFactory = TestFeignClientFallbackFactory.class)
  • TestFeignClientFallbackFactory.java
@Component
@Slf4j
public class TestFeignClientFallbackFactory implements FallbackFactory {
    @Override
    public TestFeignClient create(Throwable cause) {
        return new TestFeignClient() {
            @Override
            public String test(String name) {
                log.warn("远程调用被限流/降级了", cause);
                return "远程调用被限流/降级了";
            }
        };
    }
}
  • 重新启动应用配置流控规则频繁访问接口触发流控


  • 后台异常的打印

注:fallback 与 fallbackFactory 二选一使用


- End -
白嫖有风险
点赞加收藏
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号