2010-06-10 2 views
9

Я хочу использовать Delayed :: Job (или, возможно, более подходящую очередь заданий для моей проблемы) для отправки заданий нескольким фоновым демонам.Использование Delayed :: Job для управления несколькими очередями заданий

У меня есть несколько фоновых демонов, выполняющих различные обязанности. Каждый из них интересуется разными заданиями в очереди из приложения Rails. Возможно ли это использовать Delayed :: Job, или, возможно, существует другая очередь заданий, которая лучше подходит для этой задачи?

ответ

8

С тех пор http://github.com/collectiveidea/delayed_job достиг v3.0 и включает в себя именованные очереди! Отлично подходит для простых задач сгруппированной очереди.

0

Работники DJ просто захватывают первое задание из очереди (есть только одно) и делают это. Каждый работник такой же, как и любой другой. Вы можете запускать несколько рабочих, но все они будут работать из одной очереди.

6

Если вы хотите Отложено работу, было бы достаточно просто создать несколько таблиц, по одному в каждой очереди

Работник получает это имя таблицы из

class Job < ActiveRecord::Base 
    MAX_ATTEMPTS = 25 
    MAX_RUN_TIME = 4.hours 
    set_table_name :delayed_jobs 

Таким образом, вы могли бы изменить это и создать одна миграция за стол. И затем, когда вы начнете работу, вы запустите одного работника на очередь.

Источник: http://github.com/tobi/delayed_job

4

Resque библиотека очереди заданий, которая поддерживает несколько очередей.

1

Ответ здесь:

Delayed_job - Multiple parallel queues?

Используйте параметр -i в delayed_job (а не опция -n используется для порождения нескольких работников), чтобы установить уникальный идентификатор для каждого задания.

Смежные вопросы