将RabbitMQ与运行多线程作业的工作者一起使用 - Parallel Gem

时间:2012-04-20 06:58:13

标签: ruby parallel-processing rabbitmq

我正在使用ruby(rabbitmq,parallel gem)构建一个系统,它接受一系列作业,将它们用兔子排队,然后让工作人员从队列中弹出作业来执行它们。

很容易让工作人员在准备就绪时从队列中弹出一个作业,但我希望每个工作程序运行5个线程,这样当所有5个线程都在处理时,该工作程序不会弹出任何作业离开队列。当线程空闲时,工作人员从队列中接受作业。

使用Parallel gem,我看到创建多线程进程的唯一方法是使用以下代码。

results = Parallel.map(array, :in_processes => MAX_PROCESSES) do |item|
 item.process
end

我想做点什么

while true
 cur_threads = Parallel.get_cur_threads
 if cur_threads < MAX_PROCESSES
  # get another job from queue
  # allocate a thread for the job
end

任何想法??

1 个答案:

答案 0 :(得分:0)

我知道这已经很老了,但我认为你可能会使用work_queue宝石获得你想要的东西。