2015-07-29 19 views
12

Desidero utilizzare OrientJS con Express.js. Come configurare un pool di connessioni prima che venga effettuata una richiesta http, acquisire e rilasciare una connessione dal pool durante il ciclo di richiesta/risposta e terminare il pool quando chiudo l'app?Pool di connessioni in OrientJS

+0

[Le funzioni di OrientJS] (https://github.com/orientechnologies/orientjs#features) sembrano già contenere un supporto ** Connection Pooling **. L'hai provato? Altrimenti, puoi gestire i client con un modulo di pool di risorse generico come [questo] (https://github.com/coopernurse/node-pool). – xmikex83

+0

No, non l'ho fatto, perché non so come usarlo. Il modulo che hai menzionato sembra interessante, però. –

risposta

3

Ho guardato un po 'la sorgente di OrientJS e ho trovato un modo per utilizzare lo built-in ConnectionPool.

Non è necessario alcun modulo di pool di risorse generiche (come ho detto nel mio commento sopra). Fondamentalmente, è molto semplice. Tutto quello che dovete fare è:

var OrientDB = require('orientjs'); 

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

Ora il vostro oggetto server sta usando il costruito nel ConnectionPool, e max consentito connessioni sono .
Se si seleziona server.transport.pool, verrà visualizzato l'oggetto del pool interno.

Per verificare effettivamente quante connessioni sono state create (o in uso), è possibile controllare la lunghezza di server.transport.pool.connections (che è una matrice).

Un altro modo di guardare l'uso collegamenti è un semplice comando bash:

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

e vedrete i collegamenti.

Da questo punto, è possibile iniziare a eseguire query immediatamente e il pool di connessioni verrà utilizzato automaticamente.

+1

Questo è bello. Ma ora dobbiamo capire come gestire le connessioni all'interno del ciclo di vita http. Penso che il tuo frammento debba essere usato quando eseguo il bootstrap express js, giusto? Sai come rilasciare la connessione dopo aver compilato la risposta e come spegnere il pool quando il mio server è finito? –

+1

Ho tutto questo perché voglio chiudere con garbo tutto e finire il pool correttamente, spegnere shut db server quando necessario, gestendo qualsiasi errore che possa verificarsi. Sembra che orientdb a volte corrompa i file quando non si chiudono le cose di conseguenza ... –

+1

IMHO devi creare un modulo che esporti la variabile 'server', quindi richiederlo ogni volta che ne hai bisogno nella tua applicazione. Il processo di acquisizione/rilascio della connessione viene gestito automaticamente da OrientJS, quindi non è necessario fare nulla, basta usare l'oggetto server per interrogare i propri db (s). Per chiudere tutte le connessioni con garbo, basta chiamare 'server.close()'. Ricorda che se vuoi interrogare il db dopo, devi fare di nuovo 'var server = OrientDB (...)'. – xmikex83

Problemi correlati