4

我正在Rails 4.2使用ActiveJob支持resque/sidekiq电子邮件调度的应用程序。当用户创建时事通讯活动时,会在特定日期创建并安排新工作。这一切都很好,但是当用户更改交货日期时会发生什么。

在这种情况下,每个作业都可以检查是否应该交付,因此无效的作业将被忽略,只有最后一个会被执行。这可以工作,但如果用户进行 1k 次编辑,会将 1k-1 个无效作业推入队列 - 不好。我认为应该更新现有工作或用新工作替换。据我所知,在Redis队列中搜索的job_id速度很慢。

在 Rails 中重新安排 ActiveJobs 的正确方法是什么(使用 resque/sidekiq)?

4

1 回答 1

4

没有,工作不会被重新安排。您已经回答了自己的问题:

在这种情况下,每个作业都可以检查是否应该交付,因此无效的作业将被忽略,只有最后一个会被执行。

另一种方法是重新设计发送活动的方式:将交付日期存储在数据库中,并让 cron 每分钟检查现在需要交付的活动,然后立即创建 Sidekiq 作业。

于 2015-01-29T18:07:21.610 回答