2014-04-22 7 views
5

Nell'articolo running-mongodb-queries-concurrently-with-go ha detto che mgo.DialWithInfo: Creare una sessione che mantiene un pool di connessioni socket a MongoDB, ma quando ho cercando nel documentacion della funzione DialWithInfo non trovo qualcosa che Parlami della connessione della piscina, solo che trovo qualcosa nella funzione di funzione di composizione Dial che diceva: Questo metodo viene generalmente chiamato solo una volta per un determinato cluster. Ulteriori sessioni allo stesso cluster vengono quindi stabilite utilizzando i metodi New o Copy nella sessione ottenuta. Ciò consentirà loro di condividere il cluster sottostante e gestire il pool di connessioni in modo appropriato.Connessioni piscina in pacchetto MgO Go

  • Qualcuno può dirmi come funziona i collegamenti della piscina su MGO e se è possibile impostare questo pool?
  • È vero che DialWithInfo crea una connessione di pool o è solo la funzione di composizione che crea questo pool?

Grazie in anticipo

risposta

8

Guardando al source code for the Dial function calls, si può vedere che la funzione Dial chiama la funzione DialWithTimeout che chiama la funzione DialWithInfo. Quindi, per rispondere alla tua domanda sulle differenze tra le funzioni, sembra che Dial sia un comodo wrapper per DialWithTimeout, che a sua volta è un comodo wrapper per DialWithInfo, quindi si ottiene lo stesso pool di connessioni.

Per quanto riguarda la gestione di quel pool di connessioni, è corretto farlo nella domanda.

Altre sessioni allo stesso cluster vengono quindi stabilite utilizzando i metodi Nuovo o Copia nella sessione ottenuta. Ciò consentirà loro di condividere il cluster sottostante e gestire il pool di connessioni in modo appropriato.

Così una singola chiamata a Dial o DialWithTimeout o DialWithInfo stabilirà il pool di connessione, se avete bisogno di più di una sessione, utilizzare i session.New() o session.Copy() metodi per ottenerlo dalla sessione tornato da qualsiasi funzione Dial si è scelto di uso.

+0

Tuttavia, '.Copy()' dovrebbe essere utilizzato poiché conserva l'autenticazione, se applicabile. –