一 说明
1.1 说明
本案例在https://blog.csdn.net/u011066470/article/details/129636493 的基础上进行操作,通过消费者访问,发现,访问的消息不存在会报404空白页
1.2 解决办法
针对以上反应的问题,通过设定fallback实现降级操作。
1.2.1 pom配置
<!--SpringCloud ailibaba sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
1.2.2 配置fallback
@GetMapping(value = "/consumer/payment/nacos/{id}")
@SentinelResource(value = "fb",fallback = "handlerFallback") //fallback只负责业务异常
public CommonResult<Payment> paymentInfo(@PathVariable("id") Long id)
{
CommonResult<Payment> list= restTemplate.getForObject(serverURL+"/payment/get/"+id,CommonResult.class);
if (id == 4) {
throw new IllegalArgumentException ("IllegalArgumentException,非法参数异常....");
}else if (list.getData() == null) {
throw new NullPointerException ("NullPointerException,该ID没有对应记录,空指针异常");
}
System.out.println("list:"+list);
return list;
}
//本例是fallback
public CommonResult handlerFallback(@PathVariable Long id,Throwable e) {
Payment payment = new Payment(id,"null");
System.out.println("======================================================= fallback 降级.............");
return new CommonResult<>(444,"兜底异常handlerFallback,exception内容 "+e.getMessage(),payment);
}
1.2.3 测试
1.启动nacos,
2.启动应用
3.正常访问
1.正常访问
2.访问数据不存在,开始报空指针异常,然后执行fallback异常的处理策略
3.访问参数id为4,参数非法异常,然后执行fallback异常的处理策略
1.2.4 总结
总结: fallback只负责业务异常