Ruby on rails 构建提醒电子邮件系统
我正在Rails 4.2中构建一个预订系统,在这个系统中,我需要以预定义的时间间隔向用户发送一组电子邮件(例如,他们有即将到来的预订、预订完成后的反馈、更改/取消现有预订的链接等)。我环顾四周,找到了,但我正试图在两种方法之间做出选择 我认为构建这个系统有两种主要方法Ruby on rails 构建提醒电子邮件系统,ruby-on-rails,email,cron,delayed-job,Ruby On Rails,Email,Cron,Delayed Job,我正在Rails 4.2中构建一个预订系统,在这个系统中,我需要以预定义的时间间隔向用户发送一组电子邮件(例如,他们有即将到来的预订、预订完成后的反馈、更改/取消现有预订的链接等)。我环顾四周,找到了,但我正试图在两种方法之间做出选择 我认为构建这个系统有两种主要方法 使用类似的队列系统。无论何时有人预订,我们都会将所有电子邮件排成队列,等待正确的发送时间 赞成:一个队列用于所有电子邮件。自动重试逻辑 缺点:数千封电子邮件最终会在系统中排队。每当有人取消预订时都需要排队(依赖:销毁与此相关的电子
cron
+rake
以预定义的间隔(每小时?每十五分钟?)运行并检查需要发送的电子邮件的任务。它运行一个类似“查找三天后的所有预订”的查询,然后发送所有电子邮件
赞成:将所有内容放入应用程序逻辑,减少需要跟踪的状态量
缺点:需要跟踪哪些电子邮件已经发送,这在概念上类似于我们上面已经创建的任何工作表第二种方法更好(如果在heroku上使用heroku调度程序),队列更适合“尽快运行”而不是“在此特定日期运行”使用延迟作业(或Sidekiq)的一个很好的优点是,您可以从站点动态更新作业(或重复作业)的计划 您可以在站点中提供一个页面来更新定期作业。现在,默认情况下,延迟作业并不真正允许重复作业。不过,也有一些附加的宝石可能会引起人们的兴趣。如果计算能力不是问题,我总是更喜欢实际的作业处理器,而不是cron,因为它对我来说更易于管理。我使用了第二种方法(因为我从来没有想到第一种方法:p),不知何故,我觉得第二种方法更安全、更易于管理。依赖于延迟的作业在某种程度上并不安全,因为作业流程可能会下降,并且会像您所提到的那个样有更复杂的逻辑。