关于消息队列和mysql对接时出现的异常

来源:19-12 增加轮询购票结果功能

qq_Theonlywinne_0

2023-09-18

项目里我们不是把更新数据库和生成订单等费时操作都放在数据库里了嘛。那如果在更新数据库的时候系统发生意料之外异常了,此时令牌缓存已经减少了。这个事务改怎么保证呢?
消息队列有保证事务的操作嘛
如果从业务上来实现的话,该怎么设计

写回答

1回答

甲蛙

2023-09-18

令牌不需要很准确的数据,有很多情况会导致令牌消耗而没抢到票,设计令牌只是为了提高访问速度。

一种是我们在控台可以修改令牌的数据,另一种是可以做跑批,自动定时的根据余票数修正令牌数

0
2
甲蛙
回复
qq_Theonlywinne_0
我们的排队出票其实同时只会有一个线程在出,也就是说当AB两个人都抢票时,AB都放队列了,A消费后开始加载所有订单出票,所以它会把B的票也一起出了,而B因为那不到锁,所以消费线程结束,什么也没做。那么当B消费异常时,只要其它人在抢票,B的票还是会跟着别人的线程出的。所以,只要B的订单出了,它就肯定会出票。 另外,我们可以做个跑批,每5分钟消费一次MQ,防止没有人再抢票,导致B的票一直出不来。 以上指的是同一列车的情况,不同的车,锁不一样,可以同时出票,互不干扰
2023-09-18
共2条回复

新版Springboot3.0打造能落地的高并发仿12306售票系统

最新版Spring3.0仿12306售票系统实战

852 学习 · 511 问题

查看课程