如何在特定队列中推送工作并使用sidekiq限制数字工作者?
我知道我们可以这样做:
sidekiq_options queue: "Foo"
但在这种情况下,它只是一个队列中的Worker:“Foo”。
我需要在特定队列中分配一个Job(而不是Worker)。 使用Resque很容易:
Resque.enqueue_to(queue_name, my_job)
此外,对于并发问题,我需要将每个队列上的Worker数量限制为1。
我怎样才能做到这一点?
您可以使用https://github.com/brainopia/sidekiq-limit_fetch
然后:
Sidekiq::Client.push({ 'class' => GuidePdfWorker, 'queue' => queue_name, 'args' => [my_job] }) Sidekiq::Queue[queue_name].limit = 1
但是你必须在config / sidekiq.yml中声明你的queue_name
我做了分叉gem并修改为使用动态队列,做了拉请求,但我正在等待合并。 但在我的业务中,我使用我的gem,如下所示。
https://github.com/dlanileonardo/sidekiq-limit_fetch
只把我的gem放在Gemfile中:
gem 'sidekiq-limit_fetch', :git => 'https://github.com/dlanileonardo/sidekiq-limit_fetch.git'
(抱歉,我不会说英语)
如果我的拉取请求状态为Merged,则更新原始gem,然后传递unit testing。
我已经使用sidekiq limit fetch实现了上述function。 您可以将dynamic queue mode
设置为true,并在Sidekiq::Client.push
指定队列
并将process limit
设置为特定队列。 我们可以设置流程限制,也可以忽略,只需按照sidekiq默认限制进行处理