0

每个Thing插入数据库的都有一个archive属性。当设置为 0 时,什么都不会发生。但是,如果不是,我希望将其添加到要处理的队列中。

归档 aThing可能需要 3 到 30 秒,因为发送和处理了大量请求。所以我的问题是我是否做到了:

  1. 当 a设置Thingarchive1 时,将其放入队列以每隔一段时间(每 15 分钟左右)由 Rake 任务处理,然后将archive属性设置为 2,以阻止它再次被处理
  2. 在 上创建一个do_archive方法Thing,并在保存时执行self.delay.do_archive,并让delayed_job我为我处理所有这些

有些Things不需要处理,归档不是时间必需的事情。我的直觉是这delayed_job可能是一个更好的主意,因为它不是特定时间的,只是通过队列而不是每天午夜运行脚本。

4

1 回答 1

1

我认为你在最后一段中几乎把它钉牢了。如果它是时间相关的而不是事件驱动的,那么 cron 更有意义。但是如果有一个事件发生并且可以排队,并且它不依赖于时间,那么使用后台作业。

您可能要考虑的一件事是实际的消息传递系统是否更有意义。虽然像RabbitMQ这样的东西对于你现在的情况来说可能有点矫枉过正,但还有其他更简单的选择。SidekiqResque是两个流行的选项,它们使您可以更好地控制后台作业,并提供延迟作业的简单性和消息传递系统的健壮性。

于 2013-03-09T15:25:46.487 回答