Verwenden Sie Verzögerte :: Job, um mehrere Job-Warteschlangen zu verwalten
-
26-09-2019 - |
Frage
Ich möchte Verzögerte verwenden :: Job (oder vielleicht eine geeignetere Auftragswarteschlange zu meinem Problem) zum Versand Jobs auf mehrere Hintergrund-Daemons.
Ich habe mehrere Hintergrund-Dämonen, die verschiedene Aufgaben ausführen. Jeder ist in verschiedenen Jobs in der Warteschlange von der Rails-Anwendung interessiert. Ist dies möglich mit Verzögerte :: Job, oder vielleicht gibt es eine andere Job-Warteschlange, dass besser paßt diese Aufgabe?
Lösung
Seitdem http://github.com/collectiveidea/delayed_job v3.0 erreicht hat und umfasst genannt Warteschlangen! Hervorragend geeignet für einfache gruppierte Warteschlange Bedürfnisse.
Andere Tipps
Wenn Sie wie die Delayed Job, würde es einfach genug sein, mehrere Tabellen zu erstellen, eine pro Warteschlange
Der Arbeiter bekommt es den Tabellennamen von
class Job < ActiveRecord::Base
MAX_ATTEMPTS = 25
MAX_RUN_TIME = 4.hours
set_table_name :delayed_jobs
So Sie, dass bearbeiten könnten und eine Migration pro Tabelle erstellen. Und dann, wenn Sie Ihre Jobs starten, wird ein Arbeiter pro Warteschlange starten.
Resque ist eine Auftragswarteschlange Bibliothek, dass Stützen mehrere Warteschlangen.
Antwort ist hier:
Delayed_job - Mehrere parallele Warteschlangen
Verwenden Sie die Option -i in delayed_job (und nicht die Option -n verwendet für mehrere Arbeiter Laichen) für jeden Auftrag eine eindeutige ID setzen.
DJ Arbeiter greifen nur den ersten Auftrag aus der Warteschlange (es gibt nur eine) und es tun. Jeder Arbeiter ist das gleiche wie jeder andere. Sie können mehrere Arbeiter laufen, aber sie werden alle Arbeiten aus der gleichen Warteschlange.