Overview
En esta guía, aprenderá cómo el controlador Kotlin usa los 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 pool de conexiones es una caché de conexiones de base de datos abiertas mantenidas por el driver de Kotlin. Cuando tu aplicación solicita una conexión a MongoDB, el controlador recupera una conexión del grupo, realiza operaciones y devuelve la conexión 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 uno 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 instancia un nuevo MongoClient, el cliente abre dos sockets por servidor en su topología de MongoDB para supervisar el estado del servidor.
Por ejemplo, un cliente conectado a un set de réplicas de tres nodos abre seis sockets de supervisión. Si la aplicación utiliza la configuración predeterminada para maxPoolSize y solo query el nodo principal, puede haber como máximo 106 sockets abiertos y 100 conexiones en el pool de conexiones. Si la aplicación utiliza un preferencia de lectura para query los nodos secundarios, se pueden tener 306 conexiones totales.
Para mayor eficiencia, cree un cliente una vez para cada proceso y reutilícelo en todas las operaciones. Evite crear un nuevo cliente para cada solicitud porque esto aumentará la latencia.
Configura un pool de conexiones
Puede especificar configuraciones para su grupo de conexiones utilizando una cadena de conexión o un objeto MongoClientSettings.
Selecciona el Connection String o MongoClientSettings pestaña 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:
Opción | Descripción |
|---|---|
| Establece el número máximo de conexiones que un grupo puede establecer simultáneamente. Por defecto: |
| Establece la cantidad máxima de milisegundos que una conexión puede permanecer inactiva en el grupo antes de eliminarse y cerrarse. Por defecto: |
| Establece el número máximo de conexiones que pueden estar abiertas en un pool. Si una operación necesita una nueva conexión mientras el pool de conexiones tiene el número máximo de conexiones abiertas, la operación esperará a que se abra una nueva conexión. Por defecto: |
| Establece el número mínimo de conexiones que pueden estar abiertas en un pool. El valor de Por defecto: |
| Establece el tiempo máximo, en milisegundos, que el controlador puede seguir usando una conexión agrupada antes de cerrarla. Un valor de Por defecto: |
Para obtener más información sobre cómo limitar el tiempo de espera para nuevas conexiones, consulte la guía Limitar el tiempo de ejecución del servidor.
Para obtener más información sobre estas opciones, consulta el 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 setter que puedes usar en un bloque ConnectionPoolSettings.Builder para configurar el pool de conexiones:
Método | Descripción |
|---|---|
| Agrega un listener para eventos relacionados con el pool de conexiones. |
| Aplica la configuración de un objeto |
| Utiliza la configuración del grupo de conexiones especificada en un objeto |
| Define la frecuencia para ejecutar tareas de mantenimiento del pool de conexiones. |
| Establece el tiempo de espera antes de ejecutar la primera tarea de mantenimiento en el pool 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 permanecer abierta antes de cerrarse. |
| Establece el número máximo de conexiones que pueden estar abiertas en un pool. Por defecto: |
| Establece el tiempo máximo para esperar a una conexión disponible. por defecto: |
| 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.
Selecciona 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 cómo utilizar un pool de conexiones, consulte la visión general del pool de conexiones en el manual del servidor MongoDB.