模板网站建设一条龙,平面设计师招聘信息,如何提高一个网站,廊坊快速优化排名最近项目中需要增强系统的可靠性#xff0c;比如某远程服务宕机或者网络抖动引起服务不可用#xff0c;需要从本地或者其它地方获取业务数据#xff0c;保证业务的连续稳定性等等。这里简单记录下业务实现#xff0c;主要我们项目中调用远程接口失败时#xff0c;需要从本…最近项目中需要增强系统的可靠性比如某远程服务宕机或者网络抖动引起服务不可用需要从本地或者其它地方获取业务数据保证业务的连续稳定性等等。这里简单记录下业务实现主要我们项目中调用远程接口失败时需要从本地数据库中某表获取数据本地数据库某表每天定时同步远程接口数据。
调用大致逻辑 前端–服务A–服务B(这里时公服用于维护权限、人员等信息) 其中服务B调用远程服务故障进行服务降级从服务B的本地数据库查询数据。
一、创建切面统一业务降级
项目中实际是通过故障注入方式模拟远程接口宕机。这里简单通过除法异常模拟故障。
package com.example.demospringmybatisplus.service;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;import lombok.extern.slf4j.Slf4j;/*** 调用远程服务异常降级处理类** DATE 2024/5/8**/
Slf4j
Component
Aspect
public class DataExceptionDegradeHandler {Around(execution(* com.example.demospringmybatisplus.processors.DataOperationService.findList(..)))public Object degrade(ProceedingJoinPoint joinPoint) throws Throwable {System.out.println(Around,注解方式实现aop服务降级----);try {// 模拟调用远程服务异常int i 1 / 0;return joinPoint.proceed();} catch (Exception e) {// 调用远程服务异常改为从本地或其它地方获取业数据System.out.println(调用远程服务异常这里模拟从其它地方获取业务数据);return 1;}}
}
二、测试验证 可以看到前端请求服务A的某方法会被AOP拦截执行我们自定义的降级业务逻辑实现了服务降级功能。
源码下载点我下载 欢迎Star