Warteschlangenanbieter
Der Warteschlangenanbieter ermöglicht es Ihnen, große Mengen von Aufgaben in die Warteschlange zu stellen und dann mit einer bestimmten Rate zu dequeuen. Sie können die maximale Anzahl von Aufgaben angeben, die gleichzeitig ausgeführt werden, sowie die Anzahl der Aufgaben, die pro Sekunde aus der Warteschlange entfernt werden sollen. Aufgaben, die fehlschlagen, werden in einer separaten Warteschlange für tote Buchstaben wo Sie die Warteschlange auflösen und erneut versuchen können.
Wie es funktioniert
Wenn Sie eine Warteschlange erstellen, verwenden Sie createQueuegeben Sie die maxInflight und die msgPerSecond Parameter. Wenn Sie diese Parameter zusammen verwenden, können Sie die Entlassungsrate steuern.
Wenn Sie zum Beispiel eine Warteschlange mit maxInflight auf 1 gesetzt und msgPerSecond ebenfalls auf 1 gesetzt wurde, wird jede Sekunde eine Aufgabe an Ihren Callback-Endpunkt gesendet, vorausgesetzt, Sie geben eine 2xx um dem Warteschlangenanbieter mitzuteilen, dass Sie die Aufgabe erhalten haben. Erhält der Anbieter keine 2xx antwortet, versucht er es dreimal, bevor er die Aufgabe als fehlgeschlagen einstuft. Fehlgeschlagene Aufgaben werden in die Warteschlange der toten Buchstaben aufgenommen.
In diesem Fall, weil maxInflight auf eins gesetzt wurde, wartet die Warteschlange auf die Wiederholungsversuche, bevor sie sich der nächsten Aufgabe zuwendet. Ein höherer maxInflight Wert würde es dem Warteschlangenanbieter ermöglichen, gleichzeitig weitere Aufgaben zu senden und auf sie zu warten.
Anmerkung: Der Warteschlangenanbieter hat ein Payload-Limit von 8000 Bytes.
Funktionen
list- können Sie die von Ihnen erstellten Warteschlangen auflisten. Siehe das Codeschnipsel hier.createQueue- verwenden Sie diese Funktion, um die Anzahl der gleichzeitig ausgeführten Aufgaben und die Dequeue-Rate zu steuern. Siehe das Codeschnipsel hier.getQueueDetails- werden Details und Statistiken über eine Warteschlange abgerufen. Siehe das Codeschnipsel hier.updateQueue- verwenden Sie dies, um eine zuvor erstellte Warteschlange zu aktualisieren. Siehe das Codeschnipsel hier.deleteQueue- verwenden Sie dies, um eine zuvor erstellte Warteschlange zu löschen. Siehe das Codeschnipsel hier.pauseQueue- verwenden Sie dies, um eine zuvor erstellte Warteschlange anzuhalten. Siehe das Codeschnipsel hier.resumeQueue- wird eine zuvor pausierte Warteschlange oder eine Warteschlange, die mitisActiveeingestellt auffalse. Siehe das Codeschnipsel hier.enqueue- eine Liste von Aufgaben in eine zuvor pausierte Warteschlange einreihen. Siehe das Codeschnipsel hier.enqueueSingle- eine einzelne Aufgabe in die Warteschlange einer zuvor angehaltenen Warteschlange einreihen. Siehe das Codeschnipsel hier.deadLetterList- die Aufgaben in der Warteschlange der toten Buchstaben auflisten. Siehe das Codeschnipsel hier.deadLetterDequeue- die fehlgeschlagenen Aufgaben in die Warteschlange stellen, damit Sie sie bearbeiten können. Siehe das Codeschnipsel hier.
Anmerkung: Verwenden Sie die vcr.verifyAuth Methode um zu verifizieren, dass die Rückrufe von der Cloud Runtime Platform stammen.
Initialisierung des Warteschlangenanbieters
Um den Warteschlangenanbieter zu verwenden, müssen Sie eine Instanz des Anbieters mithilfe einer Sitzung erstellen:
const session = vcr.createSession();
const queue = new Queue(session);
Anwendungsfall
Zum Beispiel, um den Warteschlangenanbieter zu verwenden, um Aufgaben in eine Warteschlange zu stellen und wieder zu entfernen:
app.post('/queue', async (req, res, next) => {
await queue.createQueue(req.body.name, 'execute', {
maxInflight: req.body.maxInflight,
msgPerSecond: req.body.msgPerSecond,
active: true
});
res.sendStatus(200);
});
Dadurch wird eine aktive Warteschlange erstellt, d. h., sobald Aufgaben in die Warteschlange aufgenommen werden, beginnt die Warteschlange sofort mit deren Bearbeitung. Eine inaktive Warteschlange muss gestartet werden mit resumeQueue.
app.post('/enqueue', async (req, res, next) => {
await queue.enqueueSingle(req.body.name, req.body.data);
res.sendStatus(200);
});
Sie können Aufgaben in die Warteschlange stellen, indem Sie enqueueSingle oder enqueue für eine Liste von Aufgaben. Es wird erwartet, dass die Aufgabe ein JSON-Objekt ist, das als Nutzlast an den bei der Erstellung der Warteschlange angegebenen Rückruf gesendet wird.
app.post('/execute', async (req, res, next) => {
await processTask(req.body);
res.sendStatus(200);
Stellen Sie sicher, dass Sie eine 2xx Status, wenn Sie Ihre Aufgabe korrekt erledigt haben.