Springcloud學習筆記28--JeecgBoot 微服務熔斷/限流
阿新 • • 發佈:2021-10-08
1.熔斷
(1)jeecg-cloud-gateway 模組中application.yml加入如下配置
# 全域性熔斷降級配置 default-filters: - name: Hystrix args: name: default #轉發地址 fallbackUri: 'forward:/fallback' - name: Retry args: #重試次數,預設值是 3 次 retries:3 #HTTP 的狀態返回碼 statuses: BAD_GATEWAY,BAD_REQUEST #指定哪些方法的請求需要進行重試邏輯,預設值是 GET 方法 methods: GET,POST # hystrix 訊號量隔離,3秒後自動超時 hystrix: enabled: true shareSecurityContext: true command: default: execution: isolation: strategy: SEMAPHORE thread: timeoutInMilliseconds:3000
(2)熔斷處理器編寫
@RestController public class FallbackController { /** * 全域性熔斷處理 * @return */ @RequestMapping("/fallback") public Mono<String> fallback() { return Mono.just("訪問超時,請稍後再試!"); } }
(3)編寫測試方法
package org.jeecg.test.controller; import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.DictModel; import org.jeecg.test.service.TestService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.Arrays; import java.util.List; /** * @Author lucky * @Date 2021/10/8 9:15 */ @Slf4j @Api(tags = "test001") @RestController @RequestMapping("/test001") public class TestController { @Resource private TestService testService; @Autowired ISysBaseAPI sysBaseAPI; @GetMapping("/sleep") public Result mocksleep() { try { Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } List<DictModel> list=sysBaseAPI.queryAllDict(); return Result.OK(list); } }
(4)postman測試
訪問:http://127.0.0.1:9999/test001/sleep
注意:如果通過閘道器無法訪問到jeecg-cloud-test下面的方法,考慮以下解決方案(1)訪問路徑是否已經被重複使用,可以修改訪問路徑(2)重啟所有微服務
此時修改測試程式碼:讓睡眠時間為5000ms
Thread.sleep(5000);