提醒功能,到点推送消息给用户,用延迟队列方式解决,如果修改时间,怎么删除之前的队列?
场景:
应用里面做了日程提醒,每个用户可以自己添加自己的日程并且设置 提醒时间。到提醒时间节点,自动给用户发送一条短信或者PUSH消息。
之前是用的任务调度做的,就是每分钟抓数据库,去除当前时间节点的 日程,推送给用户。发现数据量大的时候,每分钟或者每五分钟抓一次数据库全部数据代价太大。
之后调整成:用户设置提醒时间时候,将 提醒时间 做成延迟队列。 但是用户可以编辑这个提醒时间。 比如: 当前是09:00, 用户第一次设置成 10:00 提醒(生成延迟队列 A),第二次修改 成 11:00 (B), 第三次 又还原成10:00(队列C).
当到 10:00 就会提醒两次。
我找了半天文档,没有找到删除延迟队列任务的方法。(用的 beanstalk)
有想过改成 database 的 jobs 表来记录,但是总感觉别扭。
哪位兄弟有过类似的经验?请不吝赐教,感谢。
推荐文章: