Fortsetzen von Jobs in der Warteschlange, nachdem der NodeJS-Worker auf Heroku neu gestartet wurde

9

Ich habe also ein ziemlich einfaches Setup auf Heroku . Ich benutze RabbitMQ für die Bearbeitung von Hintergrundjobs. Mein Setup besteht aus einem Knotenscript, das täglich mit dem Heroku Scheduler Addon läuft. Die Skripts fügen Jobs zur Warteschlange hinzu, der Worker wiederum konsumiert sie und delegiert sie zur Behandlung an ein separates Modul.

Das Problem beginnt, nachdem ich ein Ereignis SIGTERM erhalten habe, das Heroku von Zeit zu Zeit zufällig initiiert, bevor die Instanz neu gestartet wird.

Aus irgendeinem Grund wird der Worker nach dem Neustart der Instanz nie wieder aufgerufen. Nur wenn ich es manuell neu starte, indem ich heroku ps:scale worker=0 und heroku ps:scale worker=1 ausführe. Der Worker verbraucht weiterhin die ausstehenden Jobs.

Hier ist mein Arbeiter:

%Vor%     
yohairosen 21.09.2016, 07:37
quelle

1 Antwort

1

Die Methode close() für das Objekt jackrabbit nimmt einen Rückruf , sollten Sie vermeiden, den Prozess zu beenden, bis das beendet ist:

%Vor%     
idbehold 29.09.2016 19:23
quelle