Sentinel结合Fejgn接口,进行调用远程接口的调用和限流
生活随笔
收集整理的這篇文章主要介紹了
Sentinel结合Fejgn接口,进行调用远程接口的调用和限流
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
sentinel 適配了 Feign 組件。如果想使用,除了引入 sentinel-starter 的依賴(lài)外還需要 2 個(gè)步驟:
1、引入依賴(lài)
<!--feign對(duì)sentinel的支持--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>2、開(kāi)啟sentinel支持
在工程的application.yml中添加sentinel 對(duì) feign 的支持
激活sentinel的支持
feign:sentinel:enabled: true3、調(diào)用端配置FeignClient
需要配置FeignClient接口以及通過(guò) fallback 指定熔斷降級(jí)方法
創(chuàng)建一個(gè)實(shí)現(xiàn)ProductFeign接口的兜底類(lèi)
@Component public class ProductFeignHandler implements ProductFeign {@Overridepublic Map<String, Object> find(String id) {Map map=new HashMap(16);map.put("507","遠(yuǎn)程調(diào)用服務(wù)接口被限流");return map;}// Fallback 函數(shù),函數(shù)簽名與原函數(shù)一致或加一個(gè) Throwable 類(lèi)型的參數(shù).@Overridepublic Map<String, Object> pdg(String id) {Map map=new HashMap(16);map.put("507","遠(yuǎn)程調(diào)用服務(wù)接口被降級(jí)處理");return map;} }調(diào)用端Controller
@RestController @Slf4j public class UserController {@Autowiredprivate ProductFeign productFeign;@GetMapping("/user/getProductInfo")public Map<String, Object> getProductInfo(String id) {Map<String, Object> map = productFeign.find(id);log.info("返回的信息:[{}]" + map);return map;}@GetMapping("/user/getProductInfodg")public Map<String, Object> getProductInfodg(String id) {Map<String, Object> map = productFeign.pdg(id);log.info("返回的信息:[{}]" + map);return map;} }4、被調(diào)用端的Controller
@RestController @Slf4j public class ProductController {@Value("${server.port}")private int port;@GetMapping("/product/find")public Map<String, Object> find(@RequestParam("id") String id) {Map<String, Object> map = new HashMap<>();log.info("進(jìn)入商品服務(wù),當(dāng)前接收的商品id為:[{}]", id);map.put("status", true);map.put("msg", "當(dāng)前商品服務(wù)調(diào)用成功,查詢(xún)商品id為:" + id + ",當(dāng)前處理服務(wù)的端口號(hào)為: " + port);return map;}@GetMapping("/product/finddg")public Map<String,Object> pdg(@RequestParam("id") String id){Map<String, Object> map = new HashMap<>();log.info("進(jìn)入降級(jí)接口商品服務(wù),當(dāng)前接收的商品id為:[{}]", id);map.put("status", true);map.put("msg", "當(dāng)前通過(guò)降級(jí)接口商品服務(wù)調(diào)用成功,查詢(xún)商品id為:" + id + ",當(dāng)前處理服務(wù)的端口號(hào)為: " + port);return map;} }5、sentinel控制臺(tái)進(jìn)行設(shè)置
- 降級(jí)規(guī)則
- 限流規(guī)則
平常手速調(diào)用:http://localhost:9099/user/getProductInfo?id=7
祖?zhèn)魇炙?#xff1a;
訪問(wèn):http://localhost:9099/user/getProductInfodg?id=7
平時(shí)手速:
祖?zhèn)魇炙?#xff1a;
總結(jié)
以上是生活随笔為你收集整理的Sentinel结合Fejgn接口,进行调用远程接口的调用和限流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2021快手母婴行业数据价值报告
- 下一篇: 产品经理面试全流程深度复盘【面试准备篇】