根据设置会给用户生成一系列任务,有任务开始时间
和任务结束时间
,在这段时间内执行完成,才算是正常完成任务,否则逾期。
后台管理界面设置在任务结束时间
前 N 分钟向用户发起提醒推送。
A 用户在 9:50 会收到一条任务即将结束的通知
寻求目前业界常用的做法是啥 ? 没有做过这类功能的开发。
服务器端做轮询操作,每隔一段时间去扫描所有的任务,符合条件的通过极光推送至客户端,通过 Wobsocket 通知 Browser 后台管理端。
服务端做定时任务,每个任务生成的时候,自动生成一个距离结束前 N 分钟的定时任务,到时间了自动触发,通过极光推送至客户端,通过 Wobsocket 通知 Browser 后台管理端。
服务端向手机 APP 端下发提醒参数,APP 端拉取用户所有进行中的任务,APP 端监听任务进行任务提醒功能。
个人比较偏向方案三,只做客户端的提醒功能,后台管理其实不需要知道这个提醒,只需要关注结果,可以消耗更少的服务器资源实现这个需求。
1
choice4 2021-02-10 23:55:25 +08:00 1
直接延时队列有什么问题吗
|
2
icql 2021-02-10 23:56:55 +08:00 via iPhone
这不是延时消息 /队列干的事儿嘛,生成任务时发个延时消息就好了
|
3
luozic 2021-02-11 00:03:59 +08:00 via iPhone
actor 模型,非常合适这种消息
|
4
mmdsun 2021-02-11 00:32:09 +08:00 via Android
"
A 用户被下达了一个 9:00 ~ 10:00 的任务 后台设置了 10 分钟的提醒功能 结果 A 用户在 9:50 会收到一条任务即将结束的通知" 你这个就是指定时间触发一个通知操作,用任务调度框架也能实现。 |
5
wangyanrui 2021-02-11 00:36:13 +08:00 via iPhone 1
小项目直接用 redis 的 zset,大点的上个延时队列,客户端轮训即可,尽量不要客户端实现全部逻辑,否则后期想改动逻辑的话比较困难
|
6
samin OP 综合想了一下,直接采用 CRON 工程做掉
|