各位大神问个问题:
我现在在做支付宝遇到一个问题:如果有多个用户同时提交多个订单这个怎么解决?
我在网上搜到的结果是用消息队列,这里我用的是rabbitmq,但是遇到一个逻辑上的问题:
网上对rabbitmq的解释是(消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。)上面红色字体部分有点不明白,支付宝支付应该是需要即时返回结果的吧。请各位大神教教我这个小白。
谢谢啦!
一些支付行为是异步的,比如你走网页版的支付,当你最终进行支付后前端界面只是负责展示支付结果,而实际支付的交互是发生在服务端,一般是底层生成支付订单提交给扣款行,然后将用户输入的各种验证信息提交支付,这次的同步响应一般为我收到请求了,但不包含实际支付结果。当最终资金扭转完成后服务端会有一个回调(这个过程是异步的),通知提交方某个订单已经支付成功,这个时候商户(提交支付订单)才确认支付完成(甚至还包括二次验证,确认回调请求合法性)。
而这段时间界面上(以web为例)只是做了一系列跳转,最终查询支付结果呈现而已。
红色字体解释:比如下单系统,当你下完订单后有个减库存操作,将这个命令放在消息队列中就不管了,直接返回一个已成功下单消息。接下来就是队列和库存系统之间的事了(库存减少就是不需即使返回且耗时的操作)。以上观点纯属个人理解,勿喷