2020-12-29 Sentinel流控规则链路方式失效

解决方案

效果

例子
AController.testA接口调用AService.testA方法
如果我们需要限制这个入口调用AService.testA的次数,则可以通过流控规则来限制
在AService.testA方法上贴上@SentinelResource注解,并设置资源名及降级方法(因为此时是服务报错)
后再去添加流控规则

在这里插入图片描述

Controller、Service代码如下

package cn.mb.sentinelconsumer.controller;

import cn.mb.sentinelconsumer.service.AService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class AController {

    @Autowired
    private AService aService;

    @GetMapping(value = "/testA")
    public String testA() {
        return aService.testA();
    }

    @GetMapping(value = "/testB")
    public String testB() {
        return aService.testA();
    }
}
package cn.mb.sentinelconsumer.service;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.stereotype.Service;

@Service
public class AService {

    //  指定资源名,并指定降级方法
    @SentinelResource(value = "testA", blockHandler = "testAFallback")
    public String testA() {
        return "testA";
    }

    public String testAFallback(BlockException ex) {
        return "ex testA";
    }
}


结果

多次调用testA则会
在这里插入图片描述
异常

多次调用testB
在这里插入图片描述

因此可知只对testA入口调用做了限制,其他没有限制;


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值