Overview
Esta guía le muestra cómo usar el controlador Go para supervisar su grupo de conexiones. Un grupo de conexiones es un conjunto de conexiones abiertas del Protocolo de Control de Transmisión (TCP) que su controlador mantiene con una instancia de MongoDB. Los grupos de conexiones ayudan a reducir la cantidad de conexiones nuevas que su aplicación necesita crear, lo que podría acelerar su ejecución.
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.
Suscríbete a Eventos
Puede acceder a detalles sobre los eventos del grupo de conexiones suscribiéndose a ellos en su aplicación. El siguiente ejemplo muestra cómo suscribirse a PoolEvent evento instanciando un PoolMonitor y conectándose 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 grupo de conexiones. |
| Se crea cuando un grupo de conexiones está listo. |
| Se crea cuando se cierran todas las conexiones en el pool. |
| Se crea cuando se cierra un grupo de conexiones, antes de la destrucción de la instancia del servidor. |
| Se crea cuando se crea una conexión, pero no necesariamente cuando se utiliza para una operación. |
| Se crea después de que una conexión completa un protocolo de enlace y está lista para usarse 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 su ejecución. |
| 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 una salida de muestra para cada tipo de evento de monitoreo de grupo de conexiones.
Grupo de conexiones creado
*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 }
Grupo de conexiones despejado
*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 }
Conexión creada
*event.PoolEvent { "type": "ConnectionCreated", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
Conexión lista
*event.PoolEvent { "type": "ConnectionReady", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
Conexión cerrada
*event.PoolEvent { "type": "ConnectionClosed", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
Conexión verificada iniciada
*event.PoolEvent { "type": "ConnectionCheckOutStarted", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
Error en la verificación de conexión
*event.PoolEvent { "type": "ConnectionCheckOutFailed", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
Conexión verificada
*event.PoolEvent { "type": "ConnectionCheckedOut", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
Conexión registrada
*event.PoolEvent { "type": "ConnectionCheckedIn", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
Información Adicional
Para obtener más información sobre cómo monitorear una implementación de MongoDB, consulte ArtículoCómo monitorear MongoDB.
Para obtener más información sobre cómo conectarse a MongoDB, consulte 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, consulte la siguiente documentación de API:
Tipo dePoolMonitor
MétodoSetPoolMonitor()