redis中的库存数和数据库中的库存数不一致

来源:8-5 库存流水状态(3)

飞着的鱼

2019-07-25

老师:
在做测试时,在生产消息发送后返回COMMIT_MESSAGE状态时,打印发送成功的日志,在消费成功,扣减库存后,打印消费成功的日志。
===========rocketMQ transaction producer success ===========
===========rocketMQ transaction producer success ===========
===========rocketMQ transaction producer success ===========
===========rocketMQ transaction producer success ===========
===========rocketMQ consumer success =============
===========rocketMQ transaction producer success ===========
===========rocketMQ consumer success =============
===========rocketMQ transaction producer success ===========
===========rocketMQ consumer success =============
===========rocketMQ transaction producer success ===========
===========rocketMQ consumer success =============
===========rocketMQ transaction producer success ===========
===========rocketMQ transaction producer success ===========
===========rocketMQ consumer success =============
===========rocketMQ transaction producer success ===========
===========rocketMQ consumer success =============

一共下了10单,从打印的日志中看,消息生产了10条,但是消费端消费了6条,有4条并没有消费,stock_log表中记录了10条status为2的数据,item_stock表中,stock剩于94,(总库存100,redis中也为100),redis中剩于库存90。我的问题是,没有消费的4条数据,是丢了吗?还是还在消息队列中?

写回答

1回答

龙虾三少

2019-07-25

debug尝试发现问题

0
2
弓呆的胖次
回复
飞着的鱼
写队列个数是8,设置的读队列个数是4. 这个时候,会创建8个文件夹,代表0 1 2 3 4 5 6 7,但在消息消费时,路由信息只返回4,在具体拉取消息时,就只会消费0 1 2 3这4个队列中的消息,4 5 6 7中的信息压根就不会被消费。一般来说读队列个数要大于等于写队列个数。
2021-11-30
共2条回复

聚焦Java性能优化 打造亿级流量秒杀系统(赠秒杀项目)

理解高流量电商网站性能构建思路 用高逼格技术解决性能提升问题

2174 学习 · 1009 问题

查看课程