我正在使用Rails 4.2应用程序,它使用resque / sidekiq支持的ActiveJob进行电子邮件调度.当用户创建简报活动时,将在特定日期创建并安排新作业.这一切都很棒但是当用户更改交付日期时会发生什么.
在这种情况下,每个作业都可以检查是否应该交付,因此将忽略无效作业,并且仅执行最后一个作业.这可能有效,但是如果用户进行1k编辑会将1k-1个无效作业推入队列 – 这并不好.我认为现有的工作应该更新或替换为新工作.据我所知,通过Redis队列搜索job_id很慢.
在Rails中重新安排ActiveJobs的正确方法是什么(使用resque / sidekiq)?
最佳答案 没有,工作不打算重新安排.您已回答了自己的问题:
In this case every job could check if it should be delivered or not thus invalid jobs would be ignored and only the last one would be executed.
另一种方法是重新设计您发送广告系列的方式:将投放日期存储在数据库中,并让cron每分钟检查一次需要立即投放的广告系列,然后立即创建Sidekiq作业.