Ruby on rails 是否存在基于特定标准触发用户定义警报的模式?
我们需要允许用户设置警报,并在使用特定标准创建或更新特定对象时收到通知(例如,类别在列表中,数量大于X…) 我考虑过两种方法:Ruby on rails 是否存在基于特定标准触发用户定义警报的模式?,ruby-on-rails,ruby,esper,Ruby On Rails,Ruby,Esper,我们需要允许用户设置警报,并在使用特定标准创建或更新特定对象时收到通知(例如,类别在列表中,数量大于X…) 我考虑过两种方法: 使用create和update上的observer模式来评估针对该对象的所有规则,以查看它们是否被触发(这可能需要排队) 运行后台任务,定期对所有对象运行所有规则 前者似乎更“实时”,但如果我们每秒创建2个对象,那么我们将对规则进行大量评估。 后者在这方面会更有效率 这两种方法似乎都很密集(我们预计约500条规则和10-20000个对象),我想知道是否有更有效的方法
- 使用create和update上的observer模式来评估针对该对象的所有规则,以查看它们是否被触发(这可能需要排队)
- 运行后台任务,定期对所有对象运行所有规则
我们有一个运行ruby 2.0的Rails 4.1应用程序,为什么不是一个组合:一个生成后台作业的观察者(DelayedJobs,Sidekiq)。后台作业可以立即启动(取决于队列长度),但不会减慢web请求的速度。Esper中没有“评估所有规则”,因为它不是请求-响应规则引擎。Esper是一个连续查询引擎——设计您的事件和连续查询,使其在满足模式或触发阈值的事件到达时触发。我建议查看顶部页面链接的“解决方案模式”页面。