Overview
En esta guía, puedes aprender cómo el driver de Scala utiliza pools de conexiones para gestionar las conexiones a una implementación de MongoDB y cómo puedes configurar los ajustes del pool de conexiones en tu aplicación.
Un pool de conexiones es una caché de conexiones de base de datos abiertas mantenida por el driver de Scala. La aplicación recupera una conexión del pool, realiza operaciones y devuelve la conexión para su reutilización.
El uso de un pool de conexiones reduce la latencia y minimiza la cantidad de veces que el driver crea nuevas conexiones.
Crear un pool de conexiones
Cada instancia de MongoClient tiene un pool de conexiones incorporado para cada servidor en su topología de MongoDB. Los pools de conexiones abren sockets on-demand para soportar operaciones concurrentes de MongoDB en su aplicación.
La opción maxPoolSize establece el tamaño máximo de cada pool de conexiones, cuyo valor por defecto es 100. Si el número de conexiones en uso de un servidor alcanza el valor de maxPoolSize, la siguiente solicitud a ese servidor esperará hasta que una conexión esté 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
Puedes configurar un pool 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 pool de conexiones:
Opción | Descripción |
|---|---|
| El número máximo de conexiones que el driver puede establecer simultáneamente. Por defecto: |
| El número máximo de milisegundos que una conexión puede permanecer inactiva en el pool antes de que el driver la cierre. Un valor de Por defecto: |
| El número máximo de conexiones que el driver puede tener abiertas a la vez en un único pool de conexiones. Por defecto: |
| El número mínimo de conexiones que el driver mantiene en un solo pool de conexiones. Este valor debe ser inferior a 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, consulta la documentación de la API ConnectionString.
Encadene el método applyToConnectionPoolSettings() a la clase MongoClientSettings.Builder para configurar un pool de conexiones. La siguiente tabla describe los métodos ConnectionPoolSettings.Builder que puede encadenar para configurar el pool:
Método | Descripción |
|---|---|
| Agrega un listener para eventos del pool 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 de espera antes de ejecutar la primera tarea de mantenimiento en un pool 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 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 el driver mantiene en el pool. Por defecto: |
Nota
La configuración maxSize() y minSize() se aplica a cada servidor de la implementación de forma individual, no al pool 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 tratados en esta guía, consulte la siguiente documentación de la API: