0

我正在用 ruby​​(rabbitmq,parallel gem)构建一个系统,它需要一个作业列表,在 rabbit 中将它们排队,然后让工作人员从队列中弹出作业以执行它们。

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

使用 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

有任何想法吗??

4

1 回答 1

0

我知道这真的很旧,但我认为您可能会使用work_queue gem得到您想要的东西。

于 2012-07-30T16:27:02.863 回答