dubbo服务调用失败_Dubbo 自定义异常,你是怎么处理的?

前言

记录Dubbo对于自定义异常的处理方式.

实现目标服务层异常,直接向上层抛出,web层统一捕获处理

如果是系统自定义异常,则返回{"code":xxx,"msg":yyy} 其中code对应为错误码,msg对应为异常信息

如果非系统自定义异常,返回{"code":-1,"msg":"未知错误"},同时将异常堆栈信息输出到日志,便于定位问题

项目架构

先来张系统架构图吧,这张图来源自网络,相信现在大部分中小企业的分布式集群架构都是类似这样的设计:

简要说明下分层架构:通常情况下会有专门一台堡垒机做统一的代理转发,客户端(pc,移动端等)访问由nginx统一暴露的入口

nginx反向代理,负载均衡到web服务器,由tomcat组成的集群,web层仅仅是作为接口请求的入口,没有实际的业务逻辑

web层再用rpc远程调用注册到zookeeper的dubbo服务集群,dubbo服务与数据层交互,处理业务逻辑

前后端分离,使用json格式做数据交互,格式可以统一如下:1    {

2        "code": 200,            //状态码:200成功,其他为失败

3        "msg": "success",       //消息,成功为success,其他为失败原因

4        "data": object     //具体的数据内容,可以为任意格式

5    }

映射为javabean可以统一定义为:1/**

2 * @program: easywits

3 * @description: http请求 返回的最外层对象

4 * @author: zhangshaolin

5 * @create: 2018-04-27 10:43

6 **/

7@Data

8@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

9public class BaseResult implements Serializable{

10

11    private static final long serialVersionUID = -6959952431964699958L;

12

13    /**

14     * 状态码:200成功,其他为失败

15     */

16    public Integer code;

17

18    /**

19     * 成功为success,其他为失败原因

20     */

21    public String msg;

22

23    /**

24     * 具体的内容

25     */

26    public T data;

27}

返回结果工具类封装:1/**

2 * @program: easywits

3 * @description: http返回结果工具类

4 * @author: zhangshaolin

5 * @create: 2018-07-14 13:38

6 **/

7public class ResultUtil {

8

9    /**

10     * 访问成功时调用 包含data

11     * @param object

12     * @return

13     */

14    public static BaseResult success(Object object){

15        BaseResult result = new BaseResult();

16        result.setCode(200);

17        result.setMsg("success");

18        result.setData(object);

19        return result;

20    }

21

22    /**

23     * 访问成功时调用 不包含data

24     * @return

25     */

26    public static BaseResult success(){

27        return success(null);

28    }

29

30    /**

31     * 返回异常情况 不包含data

32     * @param code

33     * 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值