微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐