每当添加新事件时,会向用户发送推送通知。如果连续添加十个事件,则用户将收到十条推送通知,这种行为很让人恼火。
我想这样做:如果连续添加十个事件或者这些事件在时间上非常接近,那么每个用户只会收到一条推送通知,内容为:"#{event.name}和其他19个符合您兴趣的事件已经添加了"。
到目前为止,我所做的是:在“users”表中添加了一个字段“last_sent_notification”。每次添加新事件时,都要检查所创建的事件是否在“last_sent_notification”的2分钟半径内,并触发通知。
如果新创建的事件在“last_sent_notification”的2分钟半径内,将会创建一个后台作业,在2分钟内等待任何其他即将到来的事件,并在2分钟后触发通知。如果在2分钟的等待期间创建了新事件,则通知将考虑在该2分钟等待期间创建的所有事件。
这个问题的唯一缺点是:当添加事件时,通知不会立即发送。会有2分钟的延迟。
有没有任何设计模式或最佳解决方案可以更好地完成这项工作?
我想这样做:如果连续添加十个事件或者这些事件在时间上非常接近,那么每个用户只会收到一条推送通知,内容为:"#{event.name}和其他19个符合您兴趣的事件已经添加了"。
到目前为止,我所做的是:在“users”表中添加了一个字段“last_sent_notification”。每次添加新事件时,都要检查所创建的事件是否在“last_sent_notification”的2分钟半径内,并触发通知。
如果新创建的事件在“last_sent_notification”的2分钟半径内,将会创建一个后台作业,在2分钟内等待任何其他即将到来的事件,并在2分钟后触发通知。如果在2分钟的等待期间创建了新事件,则通知将考虑在该2分钟等待期间创建的所有事件。
这个问题的唯一缺点是:当添加事件时,通知不会立即发送。会有2分钟的延迟。
有没有任何设计模式或最佳解决方案可以更好地完成这项工作?