- 下订单后未付款订单24小时关闭
- 申請退货退款超时关闭后72小时后 验证是否订单已处理 未处理则可退货退款超时关闭 否则撤销退货退款超时关闭
- serviceA 将会多实例部署定时器时钟亂序,会导致重复添加退货退款超时关闭任务也会导致serviceA重复消费退货退款超时关闭任务
- 用户申请退货退款超时关闭后,将待退货退款超時关闭订单存入mongo
- 设置定时器获取mongo待退货退款超时关闭订单逐个push入redis,由于需要保证只有一个serviceA实例添加任务redis中使用sendIfAbsent 设置一个信号量锁,并設置超时时间以免serviceA死掉后,无法释放锁以此保证单个实例生成任务。
- 弹出任务多实例消费未到时任务不放回队列,等待下一次任务偅新生成
到时任务处理退货退款超时关闭逻辑。处理逻辑时若发生异常则设置mongodb中的异常次数字段,以此来判断重试次数重试5次以上則存储异常数据,不在进行重试并且报警。
代码还未抽象出来后续会上传github
如有人看到此文章,有更好的想法欢迎留言