您好,匿名用户
随意问技术百科期待您的加入

WebService超时后数据如何处理

+2 投票

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

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

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

我现在该怎么做呢?请各位指教!

用户头像 提问 2013年 1月24日 @ Caster 上等兵 (256 威望)
分享到:

1个回答

+1 投票
 
最佳答案

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

用户头像 回复 2013年 1月24日 @ 切糕 上等兵 (151 威望)
选中 2013年 1月24日 @Saber
提一个问题:

相关问题

0 投票
1 回复 52 阅读
0 投票
1 回复 36 阅读
0 投票
1 回复 41 阅读
+3 投票
1 回复 153 阅读
0 投票
1 回复 30 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...