关于队列的用法,队列里的多个任务的执行顺序是并行的吗?
比如秒杀活动,下单后往队列里放发货的任务,任务的内容是查看库存是否充足,如果大于订单商品数量就发货,否则就不发货并且更新订单状态。
那当队列执行的时候,是一个个的顺序执行发货任务吗?还是同步执行?
队列驱动用的 Redis,直接在 Listener 中实现 ShouldQueue 接口来实现的,但刚刚自己测试了一下,库存没有验证住,大并发的时候回出现超发的情况。
关于 LearnKu
关于库存的处理,我一般都是在接口同步判断,不会下沉到队列里判断。但是如果坚持下沉到队列判断估计也可以(然而并没有条件试验),有以下两种方案:
for update告诉数据库:要拿到排它锁再查询数据