Overview
En esta guía, puede aprender cómo el controlador Java usa grupos de conexiones para administrar 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 un caché de conexiones de base de datos abiertas, mantenido por el controlador de Java. Cuando su aplicación solicita una conexión a MongoDB, el controlador de Java obtiene una conexión del pool sin problemas, realiza operaciones y la devuelve al pool para su reutilización.
Los grupos de conexiones ayudan a reducir la latencia de las aplicaciones y la cantidad de veces que el driver de Java crea nuevas conexiones.
Crear un grupo de conexiones
Cada MongoClient La instancia tiene un pool de conexiones integrado 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 multihilo.
La opción maxPoolSize establece el tamaño máximo de cada grupo de conexiones, cuyo valor predeterminado es 100. Si el número de conexiones en uso a un servidor alcanza maxPoolSize, la siguiente solicitud a ese servidor esperará 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
Se pueden especificar configuraciones para el pool de conexiones usando una cadena de conexión o pasando un objeto MongoClientSettings al método MongoClients.create().
Selecciona el Connection String o MongoClientSettings pestaña para ver la sintaxis correspondiente:
Las siguientes son configuraciones de cadenas de conexión que puedes usar para configurar tu pool de conexiones:
Configuración | Descripción |
|---|---|
| Número máximo de conexiones que un pool puede establecer de manera simultánea. Por defecto: |
| El número máximo de milisegundos que una conexión puede permanecer inactiva en el pool antes de ser eliminada y cerrada. Configure este valor por encima del tiempo de inactividad esperado de su aplicación, pero por debajo de los tiempos de espera de conexión del firewall o proxy para evitar desconexiones inesperadas. Por defecto: |
| Número máximo de conexiones abiertas en el pool. Si una operación necesita una nueva conexión mientras el pool de conexiones tiene Por defecto: |
| Número mínimo de conexiones abiertas en el pool. El valor de Por defecto: |
| Esta opción está obsoleta. Puedes configurar este tiempo de espera estableciendo el tiempo de espera a nivel de cliente en su lugar. 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: |
| Especifica el tiempo máximo, en milisegundos, que el controlador Java seguirá usando una conexión agrupada antes de cerrarla. Un valor de Por defecto: |
El siguiente código crea un cliente con un tamaño máximo del pool de conexiones de 50.
ConnectionString connectionString = "mongodb://<host>:<port>/?maxPoolSize=50" MongoClient mongoClient = MongoClients.create(connectionString)
Para más información sobre estos parámetros, vea el Cadena de conexión Documentación de la API.
Encadena el método applyToConnectionPoolSettings() para modificar la forma en que el driver administra su grupo de conexiones.
La siguiente tabla describe los métodos que puedes encadenar a tu configuración para modificar el comportamiento del driver:
Método | Descripción |
|---|---|
| Agrega un listener para eventos relacionados con el pool de conexiones. |
| Usa los parámetros de un objeto |
| Utiliza la configuración del grupo de conexiones especificada en un objeto |
| Establece la frecuencia para ejecutar un trabajo de mantenimiento. |
| Establece el tiempo de espera antes de ejecutar el primer trabajo de mantenimiento. |
| 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 activa antes de cerrarse. |
|
Por defecto: |
| Establece el tiempo máximo para esperar a una conexión disponible. Por defecto: |
|
Por defecto: |
Nota
Estas configuraciones maxSize y minSize se aplican a cada servidor del clúster al que conecta el controlador.
Por ejemplo, suponga que conecta el controlador a un clúster con tres servidores mongos. Esto significa que puede haber como máximo maxSize conexiones y como mínimo minSize conexiones a cada mongos servidor.
El siguiente ejemplo encadena el método applyToConnectionPoolSettings() para establecer que el hilo espere como máximo 10 SECONDS por una conexión disponible, y el maxSize del pool de conexiones a 200:
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString( new ConnectionString("<your connection string>")) .applyToConnectionPoolSettings(builder -> builder.maxSize(50)) .build());
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.