Sidekiq:如何将队列作为变量传递给工作人员

Mat*_*man 5 sidekiq

我有一个这样的工人:

class MassDispatchServiceWorker
  include Sidekiq::Worker
  sidekiq_options queue: :bulk

  def perform(message_params)
    DispatchService.new(message_params).dispatch!
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,我需要相同的方法,但将队列作为变量传递。有时我希望队列很大,有时我需要其他东西。sidekiq 可以吗?

小智 10

还有另一种方法:

MyWorker.set(queue: 'foo').perform_async(1)
Run Code Online (Sandbox Code Playgroud)

来自https://github.com/mperham/sidekiq/issues/2152#issuecomment-290376790


Mik*_*ham 0

使用Sidekiq::ClientAPI。

Sidekiq::Client.push('class' => MassDispatchServiceWorker, 'args' => [], 'queue' => whatever)
Run Code Online (Sandbox Code Playgroud)