当你们遇到如下需求时你们是怎么处理,是给每个一个定时任务或者是什么?
1.待付款 60分钟后未付款 变已取消
2.买家申请退款,七天后商家无操作,退款状态由申请退款变为退款关闭
3.商家申请退款,买家没点击同意,三天自动退款给买家
4.发货后10天不点确认收货,系统自动确认收货
5.申请退货,七天不操作,自动同意退货
6.申请换货,七天不操作,自动同意换货
7.(无投诉)时,不修改申请,不申请投诉,不撤销申请时,7天后系统都会自动关闭换货
8..(无投诉)时,不修改申请,不申请投诉,不撤销申请时,7天后系统都会自动关闭退款
整好实现了一个框架解决这些问题.
整个框架包含1.事件处理平台 2.消息队列 3.定时任务平台(Hangfire)
定时任务只做一个事情.那就是定时发送消息.触发指定事件.
整个系统的所有操作都定义为消息事件.事件处理
事件处理平台订阅消息队列.将各个类型的消息分发给各自的处理方法.
比如你的问题1 定义一个订单创建事件.在创建订单往消息队列发送订单创建消息.
定义一个订单创建消息处理,在这个事件中调用定时任务创建api(Hangfire的就一行代码).
60分钟后发送一个订单超时取消消息.
然后定义一个超时取消消息处理.这个业务就完了.
我每一个需求都要创建一个新的消息队列吗?Hangfire不是.net使用的吗?java能不能用
@dom树: 当然不是...消息处理平台肯定是一个固定的.你可以在消息里加个消息类型字段.
然后消息订阅的那边根据消息类型分发到制定的处理方法就行了.
框架不能用就换个别的.我这个思路的重点就是:定时任务只做一个事情.就是定时发送消息.
所有的业务都放到消息处理中.
@吴瑞祥: 好的,我去试试,谢谢
当然是job咯,配合cron走
什么cron
谢谢,知道了