Von meiner Azure-Funktion (die in Node.js ausgeführt wird, ausgelöst durch die EventHub-Nachricht) möchte ich eine Postanforderung an eine externe Seite senden. Etwas wie:Azure-Funktionen [JavaScript/Node.js] - HTTP-Aufruf, bewährte Methoden
module.exports = function (context, eventHubMessages) {
var http = require("http");
context.log('JavaScript Function triggered by eventHub messages ');
http.request(post_options, function(res){
...
})
context.done();
Der obige Code wird wahrscheinlich funktionieren, aber ich habe Zweifel, ob das nicht ein Antipattern ist.
Situation vorstellen, wenn es Tausende von Funktionen in kurzer Zeit ausgelöst - für jede Ausführung benötigen wir ein HTTP-Client und erstellen Sie eine Verbindung zu schaffen ...
Von kurzem Forschungs mir einig Lösungsvorschlag gefunden habe für C# Azure-Funktionen: https://docs.microsoft.com/en-us/azure/architecture/antipatterns/improper-instantiation/ , die statische HttpClient-Klasse verwendet.
Ich habe eine Frage, gibt es einen ähnlichen Ansatz in Node.js Azure-Funktion? Oder eine andere Möglichkeit, um dieses Problem zu vermeiden, ein Objekt zwischen Node.js Azure Function Ausführungen zu teilen?
Ich glaube nicht, dass Muster aus C# für Knotenfunktionen gelten. Der Knoten sollte Verbindungen für Sie verwalten. Ich würde "require" außerhalb der Funktion und "context.done" innerhalb des Callbacks verschieben. – Mikhail
Können Sie das andere Ende anpassen, um Websockets zu akzeptieren? Weil das der beste Plan ist, macht alles andere mehr oder weniger eine schlechte Lösung, wenn Sie Hunderte von TCP-Handshakes pro Sekunde sprechen. – evilSnobu