【问题标题】:How to launch multiple worker processes in eventmachine?如何在 eventmachine 中启动多个工作进程?
【发布时间】:2011-03-23 20:36:13
【问题描述】:

我正在使用 rails 3、eventmachine 和 rabbitmq。

当我将消息发布到队列时,我需要启动多个工作进程。

我知道 eventmachine 是我的场景的解决方案。

有些任务会比其他任务花费更长的时间。

使用 eventmachine,从大多数代码示例看来,在任何给定时间都只会运行一个线程/进程。

如何一次启动 2-4 个工作进程?

【问题讨论】:

标签: ruby ruby-on-rails-3 rabbitmq eventmachine


【解决方案1】:

如果您使用EM.defer 方法,您传递给它的每个proc 都将被放入线程池(默认为20 个线程)。如果您更改 EM.threadpool_size,您可以拥有任意数量的工人。

worker = Proc.new do
# log running job
end

EM.defer(worker)

【讨论】:

  • 谢谢,好的,所以我在我的 rails 应用程序中写入队列。关于这个coden-p,我会把它放在启动过程中,然后EM会创建20个线程来运行'worker'方法?
  • 是的,请记住,如果您将 EM 用于其他任务,则 20 个线程在工作人员和任务之间共享。 EM 有一个用于一切的内部线程池。我建议您深入研究 EM 手册中有关可延期的内容。
猜你喜欢
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
  • 2019-05-05
相关资源
最近更新 更多