2017-01-04 2 views
1

Ich schreibe eine C# -Konsolen-App (geplante Windows-Aufgabe), um den Status von Rabbit MQ zu überwachen. Wenn die Warteschlange also nicht erreichbar ist (Dienst abgestellt, Verbindungszeitüberschreitung oder ein anderer Grund), wird eine Benachrichtigungsnachricht gesendet. Ich habe RabbitMQ .Net-Client (Version 4.1.1) verwendet. Grundsätzlich überprüfe ich, ob CreateConnection() erfolgreich ist.Überprüfen Sie, ob Rabbit MQ heruntergefahren ist

private static void CheckRabbitMQStatus() 
{ 
    ConnectionFactory factory = new ConnectionFactory(); 
    factory.Uri = "amqp://guest:[email protected]:5672/"; 
    IConnection conn = null; 
    try 
    { 
     conn = factory.CreateConnection(); 
     conn.Close(); 
     conn.Dispose(); 
    } 
    catch (Exception ex) 
    { 
     if (ex.Message == "None of the specified endpoints were reachable") 
     { 
      //send mail MQ is down 
     } 
    } 
} 

Ist dies der richtige Ansatz, um dies zu erreichen? Es gibt mehrere Tools und Plugins für Rabbit MQ, aber ich möchte eine einfache Lösung in C#.

+0

Was ist der konkrete Typ von "ex"? Der Vergleich der Nachricht könnte in späteren Versionen brechen ... –

Antwort

1

Es sollte funktionieren, wenn Sie eine einfache Nachrichtenwarteschlange eingerichtet haben (ohne Clustering oder Zusammenschluss mehrerer Maschinen).

Die RabbitMQ-API verfügt über eine Lebendigkeitsprüfung, die für Überwachungswerkzeuge wie Ihres entwickelt wurde. Es sendet und empfängt eine Nachricht. Dies ist wahrscheinlich eine empfindlichere Gesundheitskontrolle als Ihre. Siehe den letzten Punkt hier.

http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v2_2_0/priv/www-api/help.html

RabbitMQ selbst ist robust. Normalerweise ist der Fehlermodus, den es erfährt, dass sein Host aus anderen Gründen neu gestartet wird.

Hinweis: Es gibt eine nette DebuggableService Vorlage von Rob Three im Windows Marketplace. Das macht es ziemlich einfach, Ihren Gesundheitscheck als Dienst und nicht als geplante Aufgabe einzurichten. Mein Leben wurde einfacher, als ich mein MQ-Zeug so umstrukturierte, dass es als Dienste und nicht als geplante Aufgaben ausgeführt werden konnte.

Verwandte Themen