Temptation_archer 2012-09-21 13:33
浏览 403
已采纳

WebService超时后数据如何处理

 

描述:现在做的一个收费系统A,在收费后需要通过webservice向另一个系统B请求运算结果,A\B都需要保存运算结果。有点类似超市的收费系统与银行的刷卡功能对接!

流程:
1、处理本地数据 -》2、调用webservice(成功后,B系统会提交事物)-》3、成功后提交事务,失败后回滚本地事物

问题:
1、B系统处理数据会很慢,如果把3个操作放到一个事物中去控制,数据库连接占用时间过长,并发量上来后会出现大量等待连接,以至系统崩溃。
2、调webservice超时是一个很平常的事,如何在超时后还能保证数据的完整性呢?

我现在该怎么做呢?请各位指教!
  • 写回答

1条回答 默认 最新

  • jinnianshilongnian 2012-09-21 20:22
    关注

    1、本地在操作前记录好支付日志(支付开始、支付成功/失败)
    2、调用webservice后 如果超时可以采用重试机制(如果B系统能做到幂等性就最好了)
    万一超时,A系统再传一个唯一标识到B系统 B系统接到后判断那个唯一标识是否处理 如果已经处理 则直接返回成功
    3、可以采用B系统主动触发A系统模式,比如支付宝;当支付成功后立即关闭支付页面 此时将无法调用我们自身系统的回调接口进行订单处理;支付宝会定期发送回调 我们的系统会接到请求 进行处理(此时我们系统需要进行幂等处理,即我们处理了 就不再进行处理)
    4、A系统 和 B系统记录好日志;然后比如用户反馈支付失败时 进行对账 . 一定记录好日志。有据可查

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错