Redis锁异步线程中使用问题
1.出现的问题:
订单中心查询时,出现重复数据,如下图:
出现上图结果的原因在于,该订单记录存在两条评价记录。
根据现有的业务需求,一个图文咨询订单应该只会存在一条有效的评价记录,但此处可以看到orderId为2021011400000082的订单出现了两条评价记录。
2.定位问题出现的原因:
(1)新增评价记录方法代码截图
上图中可以看到此处使用redis锁,并且在锁中有判断是否已存在记录,已存在这直接return,不会创建新的记录。
1.医生结束方法和系统自动结束方法都会调用新增待评价记录方法;
2.在系统结束时会异步抛出系统结束事件,该事件内判断当无待处理处方时,会自动调用医生结束方法(模拟医生结束)。
下图1-3为系统结束、系统结束事件及医生结束代码截图: