2010-06-10 3 views
9

Ich möchte Delayed :: Job (oder vielleicht eine geeignetere Jobwarteschlange für mein Problem) verwenden, um Jobs an mehrere Hintergrunddämonen zu senden.Verwenden Sie Delayed :: Job, um mehrere Jobwarteschlangen zu verwalten

Ich habe mehrere Hintergrund-Dämonen, die verschiedene Verantwortlichkeiten ausführen. Jeder ist an verschiedenen Jobs in der Warteschlange von der Rails App interessiert. Ist dies mit Delayed :: Job möglich, oder gibt es möglicherweise eine andere Jobwarteschlange, die dieser Aufgabe besser entspricht?

Antwort

0

DJ-Arbeiter greifen einfach den ersten Job aus der Warteschlange (es gibt nur einen) und tun es. Jeder Arbeiter ist derselbe wie jeder andere. Sie können mehrere Worker ausführen, aber alle arbeiten in derselben Warteschlange.

6

Wenn Sie das Delayed Job mögen, würde es einfach genug sein, mehrere Tabellen zu erstellen, eine pro Warteschlange

Der Arbeiter bekommt es Tabellenname von

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

So Sie, dass bearbeiten könnte und erstellen eine Migration pro Tabelle Und wenn Sie Ihre Jobs starten, starten Sie einen Arbeiter pro Warteschlange.

Quelle: http://github.com/tobi/delayed_job

4

Resque ist eine Job-Warteschlange-Bibliothek, die mehrere Warteschlangen unterstützt.

1

Antwort ist hier:

Delayed_job - Multiple parallel queues?

Verwenden Sie die Option -i in delayed_job (und nicht die Option -n zum Laichen mehrere Arbeiter verwendet) eine eindeutige ID für jeden Auftrag einzustellen.