首页 > 解决方案 > Sidekiq 在特定队列中查找与特定实例相关的作业

问题描述

我刚刚在我的 Rails 应用程序上将我的作业调度程序从更改delayed_jobs为。sidekiqDelayed_jobs中,一旦我们删除了模型的一个实例Order,我们就删除了相关的作业,如下所示:

jobs = Delayed::Job.where("handler LIKE '%/Order/?%'", id).where(queue: queue)
jobs&.destroy_all

现在,由于Sidekiq在我们的数据库上不起作用,我使用了 Sidekiq API 中的文档并尝试这样做:

rs = Sidekiq::RetrySet.new
ss = Sidekiq::ScheduledSet.new
ds = Sidekiq::DeadSet.new
[rs, ss, ds].each do |set|
   set.scan("Order/#{id}").map(&:delete) if set.any?
end

这样做的问题是我没有在特定队列中搜索,因此与实例 Order/id 相关的任何作业都将被删除,我只想删除特定队列中的作业。

标签: ruby-on-railssidekiq

解决方案


推荐阅读