新手问题 请问一下 tower 里面的日程的重复提醒是怎么实现的?

optionsource · 2017年06月30日 · 最后由 optionsource 回复于 2017年06月30日 · 2509 次阅读

请问一下 tower 里面的日程的重复提醒是怎么实现的?@jasl

没参与 tower 项目,理论上就是个异步任务指定时间检查状态,然后执行一些逻辑而已

jasl 回复

恩 谢谢,提醒是异步实现的,主要是重复提醒这个问题

首先 CalendarEvent 上有一个版本号字段,然后用这个 https://github.com/rossta/montrose 批量生成提醒,放进 sidekiq perform_later 里面执行,这里需要注意的是要传入 CalendarEvent 当前的版本号。

每次更新 CalendarEvent 的时候 update 版本号,并且重新生成发送任务。队列在执行的时候,先判断版本号是否和当前 CalendarEvent 对应的一致,一致才真正的发送通知。

还有个问题是,重复到什么时候呢?比如按周提醒的事件,创建多少提醒事件呢?Tower 里面是默认创建一整年的,每年 1 月 1 号 重新生成所有 CalendarEvent 的批量事件。

zchar 回复

恩 很详细 谢谢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号