2015-07-29 13 views
12

Ich möchte OrientJS mit Express.js verwenden. Wie konfiguriere ich einen Verbindungspool, bevor eine http-Anfrage gestellt wird, erwarte und entlasse ich eine Verbindung aus dem Pool während des Anfrage/Antwort-Zyklus und beende den Pool, wenn ich die App herunterfahre?Verbindungspool in OrientJS

+0

[OrientJS Features] (https://github.com/orientechnologies/orientjs#features) scheint bereits eine ** Connection Pooling enthalten ** Unterstützung. Hast du es versucht? Andernfalls können Sie Clients mit einem generischen Ressourcen-Pooling-Modul wie [dieses] (https://github.com/coopernurse/node-pool) behandeln. – xmikex83

+0

Nein, habe ich nicht, weil ich nicht weiß, wie man es benutzt. Das Modul, das Sie erwähnt haben, sieht jedoch interessant aus. –

Antwort

3

Ich habe ein bisschen in OrientJS Quelle gesucht und gefunden tatsächlich einen Weg, um die built-in ConnectionPool zu verwenden.

Sie keine generische Ressource Pooling Modul benötigt (wie ich oben in meinem Kommentar erwähnt). Grundsätzlich ist es sehr einfach. Alles, was Sie tun müssen, ist:

var OrientDB = require('orientjs'); 

var server = OrientDB({ 
    host: 'localhost', 
    port: 2424, 
    username: 'root', 
    password: 'yourpassword', 
    pool: { 
    max: 10 
    } 
}); 

Jetzt ist Ihr server Aufgabe wird mit der in Connection gebaut und max Verbindungen sind.
Wenn Sie server.transport.pool überprüfen, sehen Sie das interne Pool-Objekt.

Um tatsächlich zu überprüfen, wie viele Verbindungen hergestellt werden (oder in Gebrauch sind), können Sie die Länge von server.transport.pool.connections überprüfen (was ein Array ist).

Eine weitere Möglichkeit, Verbindungen Einsatz zu sehen ist ein einfacher Bash-Befehl:

$ watch -n 0.1 'netstat -p tcp -an | grep 2424' 

Und Sie werden die Verbindungen sehen.

Von diesem Punkt können Sie sofort beginnen und der Verbindungspool Abfrage wird automatisch verwendet werden.

+1

Das ist cool. Aber jetzt müssen wir herausfinden, wie man die Verbindungen innerhalb des HTTP-Lebenszyklus verwaltet. Ich denke, dein Fragment muss verwendet werden, wenn ich js Express boote, oder? Wissen Sie, wie ich die Verbindung freigeben kann, nachdem ich die Antwort erstellt habe und wie ich den Pool herunterfahren soll, wenn mein Server fertig ist? –

+1

Ich habe all diese Sorgfalt, weil ich alles elegant schließen und den Pool richtig beenden will, um den DB-Server bei Bedarf herunterzufahren und jeden Fehler zu behandeln, der auftreten könnte. Es sieht aus wie orientdb manchmal korrupte Dateien, wenn Sie die Dinge nicht entsprechend schließen ... –

+1

IMHO müssen Sie ein Modul erstellen, das die 'server'-Variable exportiert, dann benötigen Sie es, wann immer Sie es in Ihrer Anwendung benötigen. der Connection acquire/Freigabeprozess wird automatisch durch OrientJS behandelt, so dass Sie brauchen nichts weiter zu tun, verwenden Sie nur das Server-Objekt Ihrer db (s) abzufragen. Um alle Verbindungen elegant zu schließen, rufen Sie einfach 'server.close()' auf. Denken Sie daran, dass Sie, wenn Sie danach die Datenbank abfragen wollen, erneut 'var server = OrientDB (...)' ausführen müssen. – xmikex83

Verwandte Themen