Используйте Delayed :: Job для управления несколькими очередями заданий - PullRequest
9 голосов
/ 10 июня 2010

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

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

Ответы [ 5 ]

8 голосов
/ 05 января 2012

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

6 голосов
/ 11 июня 2010

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

Рабочий получает имя таблицы от

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

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

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

4 голосов
/ 13 октября 2010

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

1 голос
/ 11 сентября 2013

Ответ здесь:

Delayed_job - несколько параллельных очередей?

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

0 голосов
/ 10 июня 2010

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

...