Sidekiq多个工人?

时间:2013-12-12 00:32:16

标签: resque sidekiq

我对Sidekiq有疑问。我来自Resque范例,在当前的应用程序中,我为每个队列启动一个工作器,所以在终端我会这样做:

rake resque:work QUEUE='first'
rake resque:work QUEUE='second'
rake resque:work QUEUE='third'

然后,如果我想要更多的工作人员,例如第三个队列,我只需创建更多的工作人员:

rake resque:work QUEUE='third'

我的问题是......

有了Sidekiq,你会从多个工人开始?我知道你可以这样做:

sidekiq -q first, -q second, -q third

但那只会启动一个获取所有队列的工作者。那么,我将如何启动三个工作人员,并告诉每个工人只关注一个特定的队列?另外,我如何在Heroku中做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以在config / sidekiq.yml中使用配置文件:

# Sample configuration file for Sidekiq.
# Options here can still be overridden by cmd line args.
#   sidekiq -C config.yml
---
:verbose: true
:pidfile: ./tmp/pids/sidekiq.pid
:concurrency: 15
:timeout: 5
:queues:
  - [first, 20]
  - [second, 20]
  - [third, 1]
staging:
  :verbose: false
  :concurrency: 25
production:
  :verbose: false
  :concurrency: 50
  :timeout: 60

通过这种方式,您可以准确配置您想要的内容,并准确回答您的问题,并发值是您所要求的,它定义了执行的并发工作者的数量。

此处有更多信息:https://github.com/mperham/sidekiq/wiki/Advanced-Options

答案 1 :(得分:2)

  

那么,我怎么去开始三个工人,并告诉每个工人   只关注一个特定的队列?

您可以通过sidekiq_options在工作人员级别定义应该在哪个队列中放置。

例如,将您的工作人员放在名为"#34; 的队列中,只需使用

进行定义
class MyWorker
  include Sidekiq::Worker
  sidekiq_options :queue => :first
  ...
end