如何在特定队列中推送工作并使用sidekiq限制数字工作者?

Mat*_*rix 6 ruby jobs worker resque sidekiq

我知道我们可以这样做:

sidekiq_options queue: "Foo"
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,它只是一个队列中的Worker:"Foo".

我需要在特定队列中分配一个Job(而不是Worker).使用Resque很容易:

Resque.enqueue_to(queue_name, my_job)
Run Code Online (Sandbox Code Playgroud)

此外,对于并发问题,我需要将每个队列上的Worker数量限制为1.

我怎样才能做到这一点?

Max*_*ime 6

您可以使用https://github.com/brainopia/sidekiq-limit_fetch

进而:

Sidekiq::Client.push({
    'class' => GuidePdfWorker,
    'queue' => queue_name,
    'args'  => [my_job]
})
Sidekiq::Queue[queue_name].limit = 1
Run Code Online (Sandbox Code Playgroud)

但是你必须在 config/sidekiq.yml 中声明你的 queue_name