Overview
En esta guía, aprenderá cómo el controlador de Scala utiliza grupos de conexiones para gestionar las conexiones a una implementación de MongoDB y cómo puede configurar los ajustes del grupo de conexiones en su aplicación.
Un pool de conexiones es una caché de conexiones abiertas a la base de datos, mantenida por el controlador de Scala. Tu aplicación recupera una conexión del pool, realiza operaciones y devuelve la conexión para su reutilización.
El uso de un grupo de conexiones reduce la latencia y minimiza la cantidad de veces que el controlador crea nuevas conexiones.
Crear un pool de conexiones
Cada instancia MongoClient tiene un grupo de conexiones integrado para cada servidor en su topología de MongoDB. Los grupos de conexiones abren sockets bajo demanda para admitir operaciones concurrentes de MongoDB en su aplicación.
La opción maxPoolSize establece el tamaño máximo de cada grupo de conexiones, que por defecto es 100. Si el número de conexiones en uso a un servidor alcanza el valor de maxPoolSize, la siguiente solicitud a ese servidor espera hasta que haya una conexión disponible.
Cada instancia de MongoClient abre dos sockets más por servidor en su topología de MongoDB para la supervisión del estado del servidor.
Configura un pool de conexiones
Puede configurar un grupo de conexiones utilizando una cadena de conexión o un objeto MongoClientSettings.
Selecciona la pestaña Connection String o MongoClientSettings para ver la sintaxis correspondiente:
La siguiente tabla describe las opciones de cadena de conexión para configurar un grupo de conexiones:
Opción | Descripción |
|---|---|
| El número máximo de conexiones que el controlador puede establecer simultáneamente. Por defecto: |
| El número máximo de milisegundos que una conexión puede permanecer inactiva en el grupo antes de que el controlador la cierre. Un valor de Por defecto: |
| El número máximo de conexiones que el controlador puede tener abiertas simultáneamente en un único grupo de conexiones. Por defecto: |
| El número mínimo de conexiones que el controlador mantiene en un único grupo de conexiones. Este valor debe ser menor que Por defecto: |
| Esta opción está obsoleta. Utilice El tiempo máximo de espera en milisegundos que una operación puede esperar para que una conexión esté disponible. Un valor de Por defecto: |
| El número máximo de milisegundos que una conexión puede permanecer abierta. Un valor de Por defecto: |
Para obtener más información,consulte la documentación de la API ConnectionString.
Encadena el método applyToConnectionPoolSettings() a la clase MongoClientSettings.Builder para configurar un grupo de conexiones. La siguiente tabla describe los métodos ConnectionPoolSettings.Builder que puedes encadenar para configurar el grupo:
Método | Descripción |
|---|---|
| Agrega un detector de eventos para el grupo de conexiones. |
| Aplica la configuración de un objeto |
| Aplica la configuración de un objeto |
| Establece una lista de listeners del pool de conexiones. |
| Establece la frecuencia de la tarea periódica que gestiona las conexiones inactivas y caducadas. |
| Establece el período de tiempo que debe transcurrir antes de ejecutar la primera tarea de mantenimiento en un grupo de conexiones. |
| Establece el tiempo máximo de inactividad para una conexión agrupada. Un valor de |
| Establece la vida útil máxima de una conexión agrupada. Un valor de |
| Establece el número máximo de conexiones que un pool puede establecer de manera concurrente. Por defecto: |
| Establece el número máximo de conexiones permitidas en el grupo. 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 el controlador mantiene en el grupo. Por defecto: |
Nota
Las configuraciones maxSize() y minSize() se aplican a cada servidor de su implementación individualmente, no al grupo en su conjunto.
Para obtener más información, consulte la documentación de la API ConnectionPoolSettings.Builder.
Ejemplo
El siguiente ejemplo muestra cómo crear un pool de conexiones que tenga un tamaño máximo de 50 conexiones.
Selecciona la pestaña Connection String o MongoClientSettings para ver la sintaxis correspondiente:
val mongoClient = MongoClient("mongodb://<host>:<port>/?maxPoolSize=50")
val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString("<connection string>")) .applyToConnectionPoolSettings( (builder: ConnectionPoolSettings.Builder) => builder.maxSize(50)) .build() val mongoClientWithSettings = MongoClient(settings)
Información Adicional
Para más información sobre el uso de un pool de conexiones, consulta la documentación de la pool de conexiones en el manual de servidor.
Documentación de la API
Para obtener más información sobre los tipos y métodos que se describen en esta guía, consulte la siguiente documentación de la API: