Overview
En esta guía, aprenderá cómo el controlador de sincronización de Kotlin utiliza grupos de conexiones para administrar las conexiones a una implementación de MongoDB. Puede especificar la configuración del grupo de conexiones en su aplicación para configurar este comportamiento.
Un grupo de conexiones es un caché de conexiones de base de datos abiertas, mantenido por el controlador de sincronización de Kotlin. Cuando su aplicación solicita una conexión a MongoDB, el controlador recupera una conexión del grupo, realiza operaciones y la devuelve al grupo para su reutilización.
Los grupos de conexiones ayudan a reducir la latencia de la aplicación y la cantidad de veces que el controlador crea nuevas conexiones.
Crear un grupo de conexiones
Cada MongoClient La instancia tiene un grupo de conexiones integrado para cada servidor de su topología de MongoDB. Si no configura la opción minPoolSize, los grupos de conexiones abren sockets bajo demanda. Estos sockets admiten operaciones simultáneas de MongoDB en su aplicación.
Cuando se crea una instancia de un nuevo MongoClient, el cliente abre dos sockets por servidor en su topología MongoDB para monitorear el estado del servidor.
Por ejemplo, un cliente conectado a un conjunto de réplicas de tres nodos abre seis sockets de monitorización. Si la aplicación usa la configuración predeterminada para maxPoolSize y solo consulta el nodo principal, puede haber como máximo 106 sockets abiertos y 100 conexiones en el grupo de conexiones. Si la aplicación usa un preferencia de lectura para consultar los nodos secundarios, puede haber 306 conexiones en total.
Para mayor eficiencia, cree un cliente para cada proceso y reutilícelo para todas las operaciones. Evite crear un cliente nuevo para cada solicitud, ya que esto aumentará la latencia.
Configurar un grupo de conexiones
Puede especificar configuraciones para su grupo de conexiones utilizando una cadena de conexión o un objeto MongoClientSettings.
Seleccione el Connection String o la pestaña MongoClientSettings para ver la sintaxis correspondiente:
La siguiente tabla describe las opciones de pool de conexiones que se pueden establecer en la cadena de conexión:
Para obtener más información sobre estas opciones, consulte la Documentación de la API deConnectionString.
Para especificar la configuración del pool de conexiones en un objeto MongoClientSettings, encadene el método applyToConnectionPoolSettings() al constructor MongoClientSettings. Pase un bloque ConnectionPoolSettings.Builder como parámetro al método applyToConnectionPoolSettings().
La siguiente tabla describe los métodos de configuración que puede utilizar en un bloque ConnectionPoolSettings.Builder para configurar el grupo de conexiones:
Método | Descripción |
|---|---|
| Agrega un detector para eventos relacionados con el grupo de conexiones. |
| Aplica la configuración de un objeto |
| Utiliza la configuración del grupo de conexiones especificada en un objeto |
| Establece la frecuencia con la que se ejecutan trabajos de mantenimiento del grupo de conexiones. |
| Establece el tiempo de espera antes de ejecutar el primer trabajo de mantenimiento en el grupo de conexiones. |
| Establece el tiempo máximo que una conexión puede estar inactiva antes de que se cierre. |
| Establece el tiempo máximo que una conexión agrupada puede estar abierta antes de cerrarse. |
| Establece el número máximo de conexiones que pueden abrirse en un grupo. Por defecto: |
| Establece el tiempo máximo de espera para una conexión disponible. Predeterminado: |
| Establece el número mínimo de conexiones que pueden abrirse en un grupo. Por defecto: |
Para obtener más información sobre estos métodos, consulte la documentación de la API ConnectionPoolSettings.Builder.
Ejemplo
El siguiente ejemplo muestra cómo crear un grupo de conexiones que tiene un tamaño máximo de 50 conexiones.
Seleccione la pestaña Connection String o MongoClientSettings para ver la sintaxis correspondiente:
val uri = "mongodb://<host>:<port>/?maxPoolSize=50" val client = MongoClient.create(uri)
val mongoClient = MongoClient.create( MongoClientSettings.builder() .applyConnectionString(ConnectionString("mongodb://<host>:<port>/")) .applyToConnectionPoolSettings { builder -> builder.maxSize(50) } .build() )
Información Adicional
Para obtener más información sobre el uso de un pool de conexiones, consulta Descripción general del pool de conexiones en el manual de MongoDB Server.