当前位置: 首页 > 后端技术 > Java

项目技术要点总结

时间:2023-04-01 16:05:28 Java

接收支付结果消息支付是批量支付,一次支付对应多个支付明细,需要支付多个供应商。因为是同时支付的,支付结果mq基本是同时收到的。业务需求,当收到所有支付明细的支付结果后,支付订单的状态变为支付完成。处理方案,以支付订单id为纬度锁定。解锁后的结果:有A和B两个支付明细,线程1收到支付成功消息,更新A为支付成功,查看是否所有支付成功。此时B还没有支付成功,所以支付订单的状态没有更新。支付完成;在线程A提交事务前,线程2收到B的支付成功消息,将B更新为支付成功,然后检查是否所有支付已经完成,因为此时线程A还没有提交,所以查询是线程A有尚未付款,付款订单状态未更新。最终无法将支付订单状态更改为支付完成。