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

optionsource · June 30, 2017 · Last by optionsource replied at June 30, 2017 · 2499 hits

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

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

Reply to jasl

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

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

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

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

Reply to zchar

恩 很详细 谢谢

You need to Sign in before reply, if you don't have an account, please Sign up first.