为了账号安全,请及时绑定邮箱和手机立即绑定

調用rpc失敗了如何處理

調用rpc失敗了如何處理

慕神8447489 2018-07-18 14:26:05
一个注册场景,操作1,用户注册时在子平台生成帐号,操作2,调用rpc服务,在总平台上生成帐号(1和2是两个不同的数据库)。问题是如果调用rpc失败了(请求超时,或rpc返回错误等情况),但此时操作1已经执行,这时该如何处理
查看完整描述

3 回答

?
fanfanfan5631

TA贡献1条经验 获得超0个赞

某业务方法:

    本地dao操作;

    方法1; // rpc调用

    try {   

        方法2; // rpc操作

    } catch (业务错误){

         方法1的冲正方法;

    }


     try {   

        本地dao操作;

        方法3; // rpc操作

    } catch (业务错误){

         方法1的冲正方法;

         方法2的冲正方法;

    }

    

    封装返回报文(errorCode跟errorMsg)


此处的思路主要是:

    调用完rpc服务之后,如果后续操作报错,则调用rpc服务的"回滚"服务,即冲正方法。例如转账服务 和 转账冲正服务。


查看完整回答
反对 回复 2019-11-16
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

一般主要靠两点保证数据一致性:
1.事务控制,如这里操作1执行完以后不提交事务,执行操作2等操作2返回正常请求了,然后提交操作1的事务
2.补偿机制,如这里的业务,可以通过保存请求信息和状态,然后后续通过定时任务等操作来扫描是否有总库和本地库会员不一致的情况,有的话,进行业务处理

查看完整回答
反对 回复 2018-07-18
?
千巷猫影

TA贡献1829条经验 获得超7个赞

超时和返回错误是需要分开处理的

  1. 返回错误:一般提示用户自己重试,当然1操作也需要回滚

  2. 超时: 提示用户成功, 通过消息的方式确认2是否成功,不成功进行重试


查看完整回答
反对 回复 2018-07-18
  • 3 回答
  • 0 关注
  • 827 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信