2.1K Star 13.9K Fork 5.8K

GVP小柒2012 / spring-boot-seckill

 / 详情

秒杀七(进程内队列)是不是有问题?

待办的
创建于  
2020-08-10 15:21

1、在代码里面先生成记录,然后入队列,这样子不会造成多个线程都生成了记录,但是最终不一定所有生成记录的线程都能够进入队列中吗?

2、还有一个问题,在程序运行结束后,控制台显示的是用户0-100都秒杀成功,按理说数据库应该是有101条秒杀记录,但是实际上只有100条记录,用户100虽然在控制台显示秒杀成功,但是并没有真正的生成面杀记录,不知道是为什么?
输入图片说明

评论 (5)

guyue333 创建了任务
展开全部操作日志

1)不是先生成记录,那个只是个参数
2)打印问题,已修复

1)不是先生成记录,那个只是个参数
2)打印问题,已修复

@小柒2012 为什么会出现程序提示用户100秒杀成功,但是数据库只有100条记录,说一下我的看法,不知道对不对
1、这是因为在生产任务的过程中,消费者线程也在消费任务,消费者拿到第一个任务开始执行后,
2、此时队列中容量为99,所以还会有一个任务入队列,所以有队列任务+正在消费的任务 ==> 100+1 = 101
3、但是数据库中实际商品数量只有100,也只会生成100条记录

嗯,你说得对,你看下消费哪里,已经做了逻辑更改。

嗯,你说得对,你看下消费哪里,已经做了逻辑更改。

@小柒2012 这个测试接口出现的问题,好像是在com.itstyle.seckill.queue.jvm.TaskRunner这个类下面出现的,没有看到你修改这个类啊 :joy:

嗯,你说得对,你看下消费哪里,已经做了逻辑更改。

@小柒2012 还有就是不知道为什么在用kafka或者activeMQ的时候,总是会报空指针异常,异常发生的地方应该是 com.itstyle.seckill.common.redis.RedisUtil 这个类下面的 redisTemplate没有注入,代码里面是按照 Resource 注解注入的也不行

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
87650 52itstyle 1612257122
Java
1
https://gitee.com/52itstyle/spring-boot-seckill.git
git@gitee.com:52itstyle/spring-boot-seckill.git
52itstyle
spring-boot-seckill
spring-boot-seckill

搜索帮助