Overview
Esta guía muestra cómo usar el driver Go para supervisar el pool de conexiones del driver. Un pool de conexiones es un conjunto de conexiones abiertas del Protocolo de Control de Transmisión (TCP) que tu controlador mantiene con una instancia de MongoDB. Los pools de conexiones ayudan a reducir la cantidad de nuevas conexiones que tu aplicación necesita crear, lo que podría hacer que tu aplicación funcione más rápido.
Podría usar información sobre eventos del pool de conexiones en su aplicación para optimizar el rendimiento o comprender el ciclo de vida del cliente.
Suscribirse a eventos
Puedes acceder a los detalles sobre los eventos del pool de conexiones suscribiéndote a ellos en tu aplicación. El siguiente ejemplo demuestra cómo suscribirse a la PoolEvent evento mediante la instanciación de un PoolMonitor y la conexión a una implementación:
var eventArray []*event.PoolEvent cxnMonitor := &event.PoolMonitor{ Started: func(e *event.PoolEvent) { eventArray = append(eventArray, e) }, } clientOpts := options.Client().ApplyURI(uri).SetPoolMonitor(cxnMonitor) client, err := mongo.Connect(context.TODO(), clientOpts)
Descripciones de eventos
La siguiente tabla describe los tipos de eventos de grupo que el controlador genera:
Tipo de evento del pool | Descripción |
|---|---|
| Se crea cuando se crea un pool de conexiones. |
| Se crea cuando un pool de conexiones está listo. |
| Se crea cuando se cierran todas las conexiones de la agrupación. |
| Se crea cuando se cierra un pool de conexiones, antes de la destrucción de la instancia del servidor. |
| Se crea cuando se establece una conexión, pero no necesariamente cuando se utiliza para una operación. |
| Creado después de que una conexión completa un apretón de manos y está listo para ser usado en operaciones. |
| Se crea cuando se cierra una conexión. |
| Se crea cuando una operación intenta adquirir una conexión para su ejecución. |
| Se crea cuando una operación no puede adquirir una conexión para ejecutarse. |
| Se crea cuando una operación obtiene con éxito una conexión para su ejecución. |
| Se crea cuando una conexión se revisa de nuevo en el pool después de ejecutar una operación. |
Documentos de eventos de ejemplo
Las siguientes secciones muestran la salida de muestra para cada tipo de evento de supervisión del pool de conexiones.
ConnectionPoolCreated
*event.PoolEvent { "type": "ConnectionPoolCreated", "address": "...", "connectionId": 0, "options": { "maxPoolSize": 100, "minPoolSize": 0, "maxIdleTimeMS": 0 }, "reason": "", "serviceId": null, "error": null }
ConnectionPoolReady
*event.PoolEvent { "type": "ConnectionPoolReady", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionPoolCleared
*event.PoolEvent { "type": "ConnectionPoolCleared", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionPoolClosed
*event.PoolEvent { "type": "ConnectionPoolClosed", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionCreated
*event.PoolEvent { "type": "ConnectionCreated", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionReady
*event.PoolEvent { "type": "ConnectionReady", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionClosed
*event.PoolEvent { "type": "ConnectionClosed", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionCheckOutStarted
*event.PoolEvent { "type": "ConnectionCheckOutStarted", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConexiónRevisión Fallida
*event.PoolEvent { "type": "ConnectionCheckOutFailed", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionCheckedOut
*event.PoolEvent { "type": "ConnectionCheckedOut", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
ConnectionCheckedIn
*event.PoolEvent { "type": "ConnectionCheckedIn", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
Información Adicional
Para obtener más información sobre la supervisión de una implementación de MongoDB, consulte la Artículo Cómo supervisar MongoDB.
Para obtener más información sobre cómo conectarse a MongoDB, consulte la Guía de conexión.
Documentación de la API
Para obtener más información sobre los métodos y tipos mencionados en esta guía, vea la siguiente documentación de la API:
PoolMonitor tipo
PoolEvent tipo
Método SetPoolMonitor()