Как запустить несколько рабочих процессов в eventmachine?

Я использую рельсы 3, eventmachine и rabbitmq.

Когда я публикую сообщения в очереди, мне нужно запустить несколько рабочих процессов.

Я понимаю, что eventmachine - это решение для моего сценария.

Некоторые задачи займут больше времени, чем другие.

Используя eventmachine, из большинства примеров кода кажется, что в любой момент времени будет выполняться только один поток/процесс.

Как запустить 2-4 рабочих процесса одновременно?


person Blankman    schedule 23.03.2011    source источник
comment
похоже, что вы не можете запустить более одного экземпляра EM, по крайней мере... stackoverflow.com/questions/8247691/   -  person rogerdpack    schedule 03.01.2014


Ответы (1)


если вы используете метод EM.defer каждый proc, который вы ему передаете, будет помещен в пул потоков (по умолчанию 20 потоков). у вас может быть столько рабочих, сколько вы хотите, если вы измените EM.threadpool_size.

worker = Proc.new do
# log running job
end

EM.defer(worker)
person ALoR    schedule 23.03.2011
comment
спасибо, хорошо, поэтому я пишу в очередь в своем приложении rails. Что касается этого фрагмента кода, я бы поместил его в процесс запуска, а затем EM создаст 20 потоков, которые будут запускать «рабочий» метод? - person Blankman; 24.03.2011
comment
да, просто имейте в виду, что если вы используете EM для других задач, 20 потоков распределяются между рабочими задачами. EM имеет внутренний пул потоков, используемых для всего. Я предлагаю вам покопаться в руководстве EM относительно отсрочек. - person ALoR; 24.03.2011