使用Delayed :: Job来管理多个作业队列

时间:2010-06-10 15:17:37

标签: ruby-on-rails ruby delayed-job

我想使用Delayed :: Job(或者更合适的作业队列来解决我的问题)将作业分派给多个后台守护进程。

我有几个背景守护进程执行不同的职责。每个人都对Rails应用程序中队列中的不同作业感兴趣。这是否可以使用Delayed :: Job,或者可能有一个更适合此任务的不同作业队列?

5 个答案:

答案 0 :(得分:8)

此后http://github.com/collectiveidea/delayed_job已达到v3.0并包含已命名的队列!非常适合简单的分组队列需求。

答案 1 :(得分:6)

如果您喜欢延迟作业,那么创建多个表(每个队列一个

)就足够简单了

工作人员从

获取它的表名
class Job < ActiveRecord::Base
    MAX_ATTEMPTS = 25
    MAX_RUN_TIME = 4.hours
    set_table_name :delayed_jobs

所以你可以编辑它并为每个表创建一个迁移。然后当你开始工作时,你将为每个队列启动一个工作人员。

来源:http://github.com/tobi/delayed_job

答案 2 :(得分:4)

Resque是一个支持多个队列的作业队列库。

答案 3 :(得分:1)

答案在这里:

Delayed_job - Multiple parallel queues?

在delayed_job中使用-i选项(而不是用于生成多个worker的-n选项)为每个作业设置唯一ID。

答案 4 :(得分:0)

DJ工作人员只是从队列中抓取第一份工作(只有一份)并且做到了。每个工人都与其他工人相同。您可以运行多个工作程序,但它们都可以在同一个队列中工作。