1. 程式人生 > 其它 >Springcloud學習筆記28--JeecgBoot 微服務熔斷/限流

Springcloud學習筆記28--JeecgBoot 微服務熔斷/限流

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);