2016-03-29 10 views
0

Wir haben eine Reihe von Aufgaben in einer statischen Warteschlange auf unserem Server. Wenn der Server heruntergefahren wird (oder neu startet), möchten wir diese Aufgaben nicht verlieren und speichern sie daher in einer DB-Struktur. Beim Booten wird diese DB-Struktur in die statische Warteschlange zurückgeladen, und die Verarbeitung dieser in der Warteschlange befindlichen Aufgaben wird fortgesetzt.node.js shutdown/restart observer

Wie ist es möglich, ein Herunterfahren zu erkennen, dieses Herunterfahren zu stoppen und dann das Herunterfahren fortzusetzen, nachdem die obige DB-Speicherfunktion ausgeführt wurde? Aus welchem ​​Kontext sollte diese Stilllegungsbeobachtung gemacht werden?

+0

Es gibt nicht genug Details in Ihrer Frage, um irgendeine Antwort zu geben. Bitte bearbeiten Sie Ihre Frage, um mehr Details zu Ihrem Szenario zu geben, was Sie tun müssen und warum –

+0

@DerickBailey ein bisschen mehr Details in genau was ich versuche zu erreichen. – hownowbrowncow

Antwort

1

Ich bin mir nicht sicher, ob ich Ihre Frage verstanden habe, aber wenn ich es richtig verstanden habe, möchten Sie etwas Code ausführen, bevor Ihre Skripts beendet werden, um eine Art von Bereinigung durchzuführen.

können Sie process.on(event, handler) verwenden eine Exit-Handler für das Skript für verschiedene Veranstaltungen zu registrieren, einschließlich exit (Skripte Exits), SIGINT (der Benutzer Strg + Cs das Skript) und uncaughtException (eine Ausnahme nicht abgefangen geworfen wird). Werfen Sie einen Blick auf this answer.

+0

Ja, das stimmt genau. Im Wesentlichen möchte ich den aktuellen Betriebszustand aufzeichnen und dann beim Booten fortfahren. In der verknüpften Antwort auch deine was ist "Prozess"? In welchem ​​Kontext wird dieser Event-Handler platziert? Kann es beliebig in der Codebasis platziert werden? – hownowbrowncow

+0

Ich schlage vor, Sie platzieren es am Anfang Ihres Skripts (vielleicht nach all Ihren 'requires'), denn wenn ein Fehler auftritt, bevor der Exit-Handler registriert ist, wird er nicht berücksichtigt und Sie werden nicht in der Lage sein um deinen aktuellen Status zu speichern. – christophetd