使用sidekiq-unique-jobs确保最多有一个额外的作业排队

时间:2019-02-21 14:40:01

标签: sidekiq

我有一个ActiveRecord after_commit钩子,该钩子调用Sidekiq作业,该作业负责确保刷新实例化视图。

如果Sidekiq作业当前正在运行,我仍要排队其他作业。但是,如果在Sidekiq作业当前正在运行时有几个作业进入队列,则只有一个作业是“有用的”,而其他所有作业将被浪费在物化视图更新中。

查看sidekiq-unique-jobs documentation for Locks时,我不确定哪种策略(如果有)适合我的用例。

我倾向于: sidekiq_options lock: : until_executing, on_conflict: :reject

在我看来,这是说一旦排队的任何作业都称为job1,其他尝试排队直到job1开始执行的作业将被拒绝(例如job2job3job4尝试排队,但被拒绝并放入“已死”。 job1开始执行后,任何作业都可能再次被排队,一旦命名为job5,就将再次拒绝任何其他作业,直到job5开始执行;等等。

这与他人在sidekiq-unique-jobs上的经历一致吗?

0 个答案:

没有答案