Resque: zeitkritische Jobs, die nacheinander pro Benutzer ausgeführt werden

Meine Anwendung erstellt Resque-Jobs, die nacheinander pro Benutzer verarbeitet werden müssen, und sie sollten so schnell wie möglich verarbeitet werden (maximale Verzögerung von 1 Sekunde).

Ein Beispiel: Job1 und Job2 werden für Benutzer1 und Job3 für Benutzer2 erstellt. Resque kann Job1 und Job3 parallel verarbeiten, Job1 und Job2 sollten jedoch nacheinander verarbeitet werden.

Ich habe verschiedene Gedanken für eine Lösung:

Ich könnte verschiedene Warteschlangen verwenden (z. B. Warteschlange_1 ... Warteschlange_10) und einen Arbeiter für jede Warteschlange starten (z. B.rake resque:work QUEUE=queue_1). Benutzer werden zur Laufzeit einer Warteschlange / einem Worker zugewiesen (z. B. bei der Anmeldung, jeden Tag usw.)Ich könnte dynamische "Benutzerwarteschlangen" verwenden (z. B. Warteschlange _ # {user.id}) und versuchen, die Warteschlange so zu erweitern, dass jeweils nur 1 Mitarbeiter eine Warteschlange verarbeiten kann (wie in angefordert)Resque: ein Arbeiter pro Warteschlange)Ich könnte die Jobs in eine Nicht-Resque-Warteschlange stellen und einen "Pro-Benutzer-Meta-Job" mit Resque-Sperre verwenden (https://github.com/defunkt/resque-lock), die diese Jobs erledigt.

Haben Sie Erfahrungen mit einem dieser Szenarien in der Praxis? Oder haben Sie andere Ideen, über die es sich zu denken lohnt? Ich würde mich über jede Eingabe freuen, danke!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage