支付中心:订单自动过期
2024-10-19
NEW个对象
支付中心模块,在生成订单之后,订单在10分钟会自动过期,这个功能是通过定时任务实现的。
这个功能我是写到简历上的。
面试官:定时任务设置的时间是多少久?
我说:10秒钟
面试官:定时任务比较耗性能该如何解决?
我说:做好隔离,可以将扫描的表单独分出来一个库,这样就不会影响其它业务。
面试官:有没有其它方案呢。
我说:RabbitMQ的死信队列,将订单信息加入RabbitMQ并设置有效时间,时间到期之后,就会进入死信对列,然后消费私信队列的消息即可。
如果使用RabbitMQ会增加系统的复杂度,还要运维RabbitMQ是比较麻烦的。
到此为止,特意去了解了一下订单如何关闭。
订单自动关闭的方法真不少:
除了上面两种,还有一种比较推荐:Redission + redis
可以参考这篇文章:Redis和Redission实现延迟消息
定时任务会遇到扫表问题,该如解决?
1、如果有备库的可以扫描备库。
2、优化表,给state字段添加索引
定时任务存在延迟问题,如果想减低延迟,可以用延迟消息方案。
但是要考虑增加消息队列的成本。
上一篇:Spring security基于token单点登录
下一篇:B树与B+树的区别
相关文章
-
支付中心:数据与第三方不一致该如何处理
这样的情况是存在。 遇到这样的情况,会通过定时任务进行数据同步。 当然并不是所有数据进行同步,而是同步那些异常数据。
NEW个对象 2024-10-28
-
订单是否会存在超时了,但是支付成功了的情况?
存在。订单状态:未支付、支付成功、已退款、支付关闭,如果订单超时,不可能更新为支付成功,如果订单成功,也不可能更新为超时。 订单状态流转:未支付 -> 支付成功 -> 已退款,或者 未支付 -> 支付关闭。
NEW个对象 2024-10-27
-
支付中心 - 订单同步
整个支付中心的运转规则: 业务系统请求支付中心,支付中心请求第三方。 第三方将请求结果返回给支付中心,支付中心再将结果同步到业务系统。
NEW个对象 2024-10-26
NEW个对象
JAVA是世界上最好的语言