比如我们现在有n个课程,每个课程有n个人报名。
课程开始前10分钟要给报名课程的人发通知。
这个功能如果用自动任务去做,不断轮询数据库,判断课程是否马上开始。
如果这个模块不仅仅有一个自动任务,而是多个自动任务,性能肯定会超低。
有没有好的方法来做这件事?
比如我们现在有n个课程,每个课程有n个人报名。
课程开始前10分钟要给报名课程的人发通知。
这个功能如果用自动任务去做,不断轮询数据库,判断课程是否马上开始。
如果这个模块不仅仅有一个自动任务,而是多个自动任务,性能肯定会超低。
有没有好的方法来做这件事?
有这个大量的需求,就需要有一个定时调度任务系统
课程开课时间都是已知的,那“开始前10分钟”的时间也是可知的。到那个时间触发任务就行了
简单一点的就是直接写系统cron,调用你自己发送通知的接口。
这需求还用轮询? 你课程是怎么开始的?总不会是自动的吧?
后台或者老师点击开启课程(10分钟前预开启)->触发查询数据库这个课程所有报名者信息->信息进入异步队列->后台队列推送到个人通知。
15 回答8.4k 阅读
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
8 回答6.2k 阅读
3 回答2k 阅读✓ 已解决
5 回答3.2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
多个定时任务
。给他一个容差的区间,比如你这里是要求提前10分钟,你就定义两个定时任务。
一个 9 分钟一次①,一个 2 分钟一次。②
当 ① 运行时,遇到即将需要触发的,比如在 15 分钟以内的,就放到第二组队列去。
由第 ② 个定时任务去从这一组队列中查找,并执行。