我正在使用基于 Rails 4.2 的应用程序,该应用程序使用 resque/sidekiq 支持的 ActiveJob 进行电子邮件计划。当用户创建 newsletter campaign 时,将创建并安排在特定日期上运行的新作业。这非常好,但是如果用户更改了交付日期会发生什么呢?
在这种情况下,每个作业都可以检查它是否应该被执行,从而无效的作业将被忽略,只有最后一个作业将被执行。这可能有效,但如果用户进行了 1000 次编辑,则会将 1000-1 个无效作业推入队列 - 这不好。我认为应当更新或替换现有的作业。据我所知,在 Redis 队列中搜索 job_id 是很慢的。
那么,重定期 Rails 中的 ActiveJobs 的正确方法是什么(使用 resque/sidekiq)?
在这种情况下,每个作业都可以检查它是否应该被执行,从而无效的作业将被忽略,只有最后一个作业将被执行。这可能有效,但如果用户进行了 1000 次编辑,则会将 1000-1 个无效作业推入队列 - 这不好。我认为应当更新或替换现有的作业。据我所知,在 Redis 队列中搜索 job_id 是很慢的。
那么,重定期 Rails 中的 ActiveJobs 的正确方法是什么(使用 resque/sidekiq)?