2012-06-27 8 views
46

Ich bin daran interessiert, einen Überwachungsdienst einzurichten, der mich immer dann anweist, wenn zu viele Jobs in der Resque - Warteschlange sind (ich habe etwa 6 Warteschlangen, für die ich unterschiedliche Nummern haben werde) jede Warteschlange). Ich möchte auch einen sehr ähnlichen Überwachungsdienst einrichten, der mich benachrichtigt, wenn ich eine bestimmte Anzahl von fehlgeschlagenen Jobs in meiner Warteschlange überschreite.Programmatisch die Anzahl der Jobs in einer Resque - Warteschlange erhalten

Meine Frage ist, es gibt eine Menge Schlüssel und Verwirrung, die ich mit Resque auf meinem Redis-Server verbunden sehe. Ich sehe nicht unbedingt einen einfachen Weg, um die Anzahl der Jobs pro Warteschlange oder die Anzahl der fehlgeschlagenen Jobs zu ermitteln. Gibt es derzeit eine triviale Möglichkeit, diese Daten von Redis zu holen?

Antwort

112

Ja, es ist ganz einfach, da Sie mit der Resque gem:

require 'resque' 

Resque.info 

wird wieder ein Hash

eg/=>

{ 
     :pending => 54338, 
     :processed => 12772, 
     :queues => 2, 
     :workers => 0, 
     :working => 0, 
     :failed => 8761, 
     :servers => [ 
     [0] "redis://192.168.1.10:6379/0" 
    ], 
    :environment => "development" 
} 

So die ausgefallene Auftragsanzahl zu erhalten , verwenden Sie einfach:

Resque.info[:failed] 

die

Um die Warteschlangen verwenden => 8761 #in mein Beispiel geben würde:

Resque.queues 

dies gibt ein Array

eg/=>

[ 
    [0] "superQ", 
    [1] "anotherQ" 
] 

Sie kann dann die Anzahl der Jobs pro Warteschlange finden:

Resque.size(queue_name) 

z/Resque.size("superQ") oder Resque.size(Resque.queues[0]) .....

HTH?

+1

Das ist genial. Vielen Dank! – randombits

+1

Danke für sehr nützliche Post – vinothini

+1

Große Antwort, danke. – sa125

7

Hier ist ein Bash-Skript, das die Gesamtzahl der Jobs in der Warteschlange und die Anzahl der fehlgeschlagenen Jobs überwacht.

Dies ist für Resque 1.X, 2.0 könnte verschiedene Schlüsselnamen haben.

Verwandte Themen