Sidekiq与一名从两个队列中获取工作的工人

时间:2014-06-19 01:04:47

标签: ruby-on-rails sidekiq

我希望Worker能够从两个队列中获取作业,每个队列具有不同的优先级。

现在,我的工作人员看起来像这样:

class OrderWorker
  include Sidekiq::Worker
  sidekiq_options retry: false, queue: :orders
end

但是我想拥有另一个具有更高优先级的命令的队列,并让工作者使用其他队列。 Sidekiq甚至可以做到这一点吗?如果是,那么在您执行OrderWorker.perform_async(...)时,如何指定哪个队列?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以将queue作为选项传递:

OrderWorker.perform_async(:queue => 'high')
OrderWorker.perform_async(:queue => 'default') # default is 'default' anyway

perform_asyncperform_in调用方法push,其中包含queue个参数。

答案 1 :(得分:0)

说实话,我不知道sidekiq是否支持这个,但如果是我,我可能只是使用继承,因为它只是简单的Ruby。

class OrderWorker
  include Sidekiq::Worker
end

class HighPriorityOrderWorker < OrderWorker
  sidekiq_options retry: false, queue: :high_priority_orders
end

class LowPriorityOrderWorker < OrderWorker
  sidekiq_options retry: false, queue: :low_priority_orders
end
相关问题