日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Sentinel结合Fejgn接口,进行调用远程接口的调用和限流

發(fā)布時(shí)間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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: true

3、調(diào)用端配置FeignClient
需要配置FeignClient接口以及通過(guò) fallback 指定熔斷降級(jí)方法

@FeignClient(value = "client",fallback = ProductFeignHandler.class) public interface ProductFeign {@GetMapping("/product/find")Map<String,Object> find(@RequestParam("id") String id);@GetMapping("/product/finddg")Map<String,Object> pdg(@RequestParam("id") String id); }

創(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。