【发布时间】:2011-03-02 05:46:34
【问题描述】:
我想使用 Delayed::Job(或者更适合我的问题的作业队列)将作业分派给多个后台守护进程。
我有几个执行不同职责的后台守护进程。每个人都对 Rails 应用程序队列中的不同作业感兴趣。是否可以使用 Delayed::Job,或者可能有更适合此任务的不同作业队列?
【问题讨论】:
标签: ruby-on-rails ruby delayed-job
我想使用 Delayed::Job(或者更适合我的问题的作业队列)将作业分派给多个后台守护进程。
我有几个执行不同职责的后台守护进程。每个人都对 Rails 应用程序队列中的不同作业感兴趣。是否可以使用 Delayed::Job,或者可能有更适合此任务的不同作业队列?
【问题讨论】:
标签: ruby-on-rails ruby delayed-job
从那时起http://github.com/collectiveidea/delayed_job 已达到 v3.0 并包括命名队列!非常适合简单的分组队列需求。
【讨论】:
如果您喜欢延迟作业,那么创建多个表就足够简单了,每个队列一个
worker 从
获取它的表名class Job < ActiveRecord::Base
MAX_ATTEMPTS = 25
MAX_RUN_TIME = 4.hours
set_table_name :delayed_jobs
因此您可以对其进行编辑并为每个表创建一个迁移。然后,当您开始工作时,您将为每个队列启动一名工作人员。
【讨论】:
Resque是一个支持多队列的作业队列库。
【讨论】:
答案在这里:
Delayed_job - Multiple parallel queues?
使用delayed_job 中的-i 选项(而不是用于生成多个worker 的-n 选项)为每个作业设置唯一ID。
【讨论】:
DJ 工作人员只需从队列中获取第一个工作(只有一个)并执行。每个工人都和其他工人一样。您可以运行多个工作器,但它们都将在同一个队列中工作。
【讨论】: