Benötigt Node.js eine Jobwarteschlange?
Nicht generisch. Eine Jobwarteschlange soll ein bestimmtes Problem lösen, normalerweise mit mehr zu tun, als ein einzelner node.js-Prozess sofort verarbeiten kann, so dass Sie Dinge "in die Warteschlange stellen" und sie sogar an andere Prozesse weiterreichen können .
Möglicherweise haben Sie sogar Prioritäten für verschiedene Arten von Aufträgen oder möchten die Ausführungsrate von Aufträgen steuern (vorausgesetzt, Sie haben ein Limit, müssen Sie auf einem externen Server bleiben oder einfach nicht überfordern) ein anderer Server). Sie können auch nodejs clustering verwenden, um die Anzahl der Aufgaben zu erhöhen, die Ihr Knotenserver verarbeiten kann. Eine Warteschlange besteht also darin, die Ausführung einiger CPU- oder ressourcenintensiver Tasks zu steuern, wenn Sie mehr davon zu erledigen haben, als Ihr Server auf einmal ausführen kann. Eine Warteschlange gibt Ihnen die Kontrolle über den Ausführungsablauf.
Ich sehe keinen Grund für den Code, den Sie zeigen, um eine Jobwarteschlange zu verwenden, es sei denn, Sie haben viele von diesen auf einmal gemacht.
Die spezifische Kue
library erwähnen Sie listet diese Funktionen auf der NPM Seite:
- Verzögerte Jobs
- Verteilung von parallelen Arbeitsbelastung
- Job Ereignis und Fortschritt PubSub
- Job TTL
- Optional Versuche mit Backoff
- Graceful Worker Shutdown
- Volltextsuche
- RESTful JSON API
- Rich-integrierte UI
- Infinite Scrolling
- UI Fortschrittsanzeige
- Job spezifische Protokollierung
Also, ich denke, es ist selbstverständlich, dass Sie eine Warteschlange hinzufügen würden, wenn Sie bestimmte Warteschlangenfunktionen benötigen, und Sie würden die Bibliothek Kue
verwenden, wenn sie die besten Funktionen für Ihr spezielles Problem hätte.
Falls es darauf ankommt, ist Ihr Code res.send("ok")
sendet, bevor es mit den Asynchron-Aufgaben beendet und bevor Sie wissen, ob es oder nicht erfolgreich war. Manchmal gibt es Gründe, das zu tun, aber manchmal möchten Sie zurück kommunizieren, ob die Operation erfolgreich war oder nicht (was Sie nicht tun).
@ wong2 - Hat dies Ihre Frage beantwortet? – jfriend00