dubbo 统一异常处理
依赖包 pom.xml
如下:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>3.0.4</version>
</dependency>
dubbo 服务:
示例:
@DubboService(interfaceClass = PersonService.class, group = "HSF", version = "2.0.0")
@Component
public class PersonServiceImpl implements PersonService {
}
dubbo 统一异常处理
指定切入点,进行环绕通知。如果有异常,就捕获后处理。
@Aspect
@Component
@Slf4j
public class DubboExceptionAop {
/**
* 定义切入点。 指定dubbo service的注解。
* 如果是旧版本,使用
* @Pointcut("@within(org.apache.dubbo.config.annotation.Service)")
*
*/
@Pointcut("@within(org.apache.dubbo.config.annotation.DubboService)")
public void dubboException() {
}
/**
* 环绕通知
*
*/
@Around(value = "dubboException()")
public Object handlerException(ProceedingJoinPoint proceedingJoinPoint) {
Object result = null;
Long time = System.currentTimeMillis();
Signature signature = proceedingJoinPoint.getSignature();
String params = JSON.toJSONString(proceedingJoinPoint.getArgs());
try {
result = proceedingJoinPoint.proceed();
} catch (BusinessException businessException) {
//业务异常
log.error("{} dubbo businessException:{},param:{}", signature.getName(), businessException.getMessage(), params,businessException);
result = new Response<>(Response.Status.FAILED.getCode(), businessException.getMessage());
} catch (Throwable throwable) {
log.error("{} dubbo exception:{},param:{}", signature.getName(), params,throwable);
result = new Response<>(Response.Status.FAILED.getCode(), "失败");
} finally {
Long cost = System.currentTimeMillis() - time;
//统计耗时
log.info("{} biz over,it takes time:{}", signature.getName(), cost);
}
return result;
}
}
分类:
其他--dubbo
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2018-04-03 mysql数据类型