JAVA全系列 教程
3762个小节阅读:7092.4k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
我们测试时访问id=-1的资源模拟redis服务崩溃,为了方便测试,注释掉布隆过滤器的代码。
重新启动项目,设置从数据库查询秒杀商品资源的QPS为5,测试大量访问id=-1的秒杀资源时,限流是否生效。
限流时会产生大量失败请求,为了响应更加友好,我们配置Setinel服务降级。
xxxxxxxxxx
@SentinelResource(value = "findSecillGoodsByMySql",blockHandler = "mySqlBlockHandler")
@Override
public SeckillGoods findSecillGoodsByMySql(Long goodsId) {
// 4. 如果该商品不在秒杀状态,返回null
QueryWrapper<SeckillGoods> queryWrapper = new QueryWrapper();
queryWrapper.eq("goodsId", goodsId);
SeckillGoods seckillGoodsMysql = seckillGoodsMapper.selectOne(queryWrapper);
System.out.println("从mysql中查询秒杀商品");
Date now = new Date();
if (seckillGoodsMysql == null
|| now.after(seckillGoodsMysql.getEndTime())
|| now.before(seckillGoodsMysql.getStartTime())
|| seckillGoodsMysql.getStockCount() <= 0){
return null;
}
// 5. 如果该商品在秒杀状态,将商品保存到redis中,并返回该商品
addRedisSeckillGoods(seckillGoodsMysql);
return seckillGoodsMysql;
}
/**
* 降级处理
* @return 空值
*/
public SeckillGoods mysqlBlockHandler(Long goodsId,BlockException e){
System.out.println("服务降级处理");
return null;
}
测试服务降级是否生效