2013-12-12 4 views
3

У меня есть вопрос относительно Sidekiq. Я родом из парадигмы Resque, и в текущем приложении я запускаю одного работника за очереди, поэтому в терминале я хотел бы сделать:Sidekiq несколько работников?

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 

Но это только запустит одного работника, который выберет все эти очереди. Итак, как бы я пошел, чтобы начать трех рабочих и сказать каждому работнику просто сосредоточиться на определенной очереди? Кроме того, как мне это сделать в Героку?

+0

Ни один из ответов понял вопрос. Я считаю, что реальный ответ заключается в том, чтобы заставить рабочих работать над отдельными процессами и указать, какие рабочие идут с этой очередью. Вы что-то придумали для этого? – toddmetheny

ответ

3

Вы можете использовать конфигурационный файл в конфиге/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 

Таким образом, вы можете настроить именно то, что вы хотите, и точно ответить на ваш вопрос значение параллелизма то, что вы loking для, он определяет количество выполняемых одновременно работающих работников.

Больше информации здесь: https://github.com/mperham/sidekiq/wiki/Advanced-Options

2

Итак, как я пошел бы, чтобы начать три рабочих, и сказать каждому работнику в просто сосредоточиться на определенной очереди?

На рабочем уровне можно определить, в какой очереди он должен быть размещен через sidekiq_options.

разместить, например, ваш сотрудник в очереди под названием «первый» просто определить его

class MyWorker 
    include Sidekiq::Worker 
    sidekiq_options :queue => :first 
    ... 
end 
Смежные вопросы