Ich habe eine Node.js timerTrigger
Azure-Funktion, die eine Sammlung verarbeitet und die Verarbeitungsergebnisse für die weitere Verarbeitung in eine Warteschlange stellt (durch eine Node.js queueTrigger
-Funktion).Kann ich mehrere Elemente aus einer einzigen Ausführung einer Azure-Funktion in eine Warteschlange stellen?
Der Code ist so etwas wie die folgenden:
module.exports = function (context, myTimer) {
collection.forEach(function (item) {
var items = [];
// do some work and fill 'items'
var toBeQueued = { items: items };
context.bindings.myQueue = toBeQueued;
});
context.done();
};
Dieser Code wird nur die letzte toBeQueued
Warteschlange und nicht jeder, den ich in die Warteschlange bin versucht.
Gibt es eine Möglichkeit, mehr als einen Artikel in die Warteschlange zu stellen?
aktualisieren
klar sein, ich spreche über eine toBeQueued
in jeder Iteration von forEach
Warteschlangen, nicht nur ein Array Warteschlangen. Ja, es gibt ein Problem mit Azure-Funktionen, aufgrund dessen ich ein Array nicht in die Warteschlange stellen kann, aber ich habe einen Workaround dafür; d.h. { items: items }
.
Danke für die Antwort und für den Verweis auf das Repository in GitHub. Ich denke, wir reden über 2 verschiedene Themen, habe ich recht? Ich aktualisiere die Frage, um diesen Punkt zu klären. – TheBlueSky
Ich sehe die Unterscheidung. Für Node.js nach dem obigen Array-Fix wird dieses Array von Nachrichten nur verarbeitet, ** nachdem ** Ihre Funktion zurückgibt. I.e. Es findet keine tatsächliche Nachrichtenwarteschlange statt, bis Ihre Funktion beendet ist. Ich denke, das wird die häufigsten Szenarien ansprechen. In Bezug auf die obige Problemumgehung für das Einreihen in ein Array - das führt nicht dazu, dass mehrere einzelne Warteschlangennachrichten geschrieben werden. Die Array-Unterstützung ist für Szenarien geeignet, in denen mehrere einzelne Nachrichten in die Warteschlange eingereiht werden müssen. – mathewc
Ja, verstanden .. und wie du gesagt hast, habe ich die Problemumgehung nur verwendet, um das Array-Problem zu beheben. Also zurück zu meiner Frage, das Szenario, das ich versuche zu erreichen, wird nicht unterstützt, (1) wird es sein?, Und (2) was sind meine Optionen? – TheBlueSky