Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
/ / /

Especificar la configuración de MongoClient

En esta guía, puedes aprender sobre los diferentes ajustes para controlar el comportamiento de tu MongoClient.

Las siguientes secciones describen configuraciones comúnmente utilizadas:

  • MongoClientSettings

  • Configuración del clúster

  • Configuración de socket

  • Pool de conexiones Settings

  • Configuraciones del servidor

  • Configuración TLS/SSL

Puede controlar el comportamiento de su MongoClient creando y pasando un MongoClientSettings objeto a MongoClient.create() método.

Para crear un objeto MongoClientSettings, utiliza el método MongoClientSettings.builder() y encadena métodos para especificar tus configuraciones. Después de encadenarlos, utilice el método build() para crear el objeto MongoClientSettings.

La siguiente tabla describe todos los métodos que puedes encadenar para modificar el comportamiento de tu conexión:

Método
Descripción

addCommandListener()

Agrega un listener para eventos de comando.

applicationName()

Establece el nombre lógico de la aplicación utilizando el MongoClient.

applyConnectionString()

Aplica las configuraciones del ConnectionString dado al generador. Si omite este método, el controlador intenta conectarse a localhost.

applyToClusterSettings()

Aplica el bloque ClusterSettings.Builder y luego configura los ajustes de clúster.

applyToConnectionPoolSettings()

Aplica el bloque ConnectionPoolSettings.Builder y luego configura la configuración del pool de conexiones.

applyToServerSettings()

Aplica el bloque ServerSettings.Builder y luego configura los ajustes del servidor.

applyToSocketSettings()

Aplica el bloque SocketSettings.Builder y luego establece la configuración del socket.

applyToSslSettings()

Aplica el bloque SslSettings.Builder y luego establece la configuración de TLS/SSL.

autoEncryptionSettings()

codecRegistry()

Establece el registro de códecs. Establece el registro de códecs.

commandListenerList()

Establece los escuchas de comandos.

compressorList()

Establece los compresores que se usarán para comprimir mensajes en el servidor.

credential()

Establece la credencial.

readConcern()

readPreference()

retryReads()

Si el controlador debe reintentar lecturas si ocurre un error de red.

retryWrites()

Si el controlador debería volver a intentar las escrituras si ocurre un error de red.

serverApi()

Establece la API del servidor que se debe usar al enviar comandos al servidor.

streamFactoryFactory()

Establece la fábrica a utilizar para crear un StreamFactory.

uuidRepresentation()

Establece la representación del UUID que se debe usar al codificar instancias de UUID y decodificar valores binarios BSON con subtipo 3.

writeConcern()

En este ejemplo, se muestra la especificación de un ConnectionString:

val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("<your connection string>"))
.build()
)

Tip

Cada configuración tiene un método applyConnectionString(). Rara vez se necesitan dentro de la configuración, por lo que debe usar este método como se muestra en el ejemplo anterior.

Nota

Orden de encadenamiento

Algunas opciones de la configuración se asignan a una opción de cadena de conexión. Si especificas las mismas opciones en tu configuración y en la cadena de conexión, el orden en que las encadenas determina la opción que utiliza el driver. El driver usa la última configuración que lee.

Por ejemplo, este snippet contiene configuraciones con los siguientes tiempos para que el driver se conecte a un socket disponible:

  • La cadena de conexión especifica dentro de 2 SECONDS

  • El ajustes del socket especifica dentro de 5 SECONDS

val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("mongodb+srv:/<db_username>:<db_password>@<hostname>:<port>?connectTimeoutMS(2000)"))
.applyToSocketSettings{ builder ->
builder.connectTimeout(5, TimeUnit.SECONDS)
}
.build()
)

Dado que el controlador lee las opciones de configuración del socket en último lugar, se espera que el controlador se conecte a un socket disponible dentro de 5 SECONDS antes de que se agote el tiempo de espera.

Tip

Registra tu configuración

Para registrar la configuración de la instancia MongoClient, configura el registrador llamado org.mongodb.driver.client en el nivel INFO.

Para aprender más sobre el registro con el driver MongoDB Kotlin, consulta la guía de registro.

Encadena el método applyToClusterSettings() para modificar el comportamiento del controlador al interactuar con tu clúster de MongoDB.

La siguiente tabla describe todos los métodos que puedes encadenar a tus parámetros para modificar el comportamiento del controlador:

Método
Descripción

addClusterListener()

Agrega un listener para eventos relacionados con el clúster.

applyConnectionString()

Usa los parámetros de un objeto ConnectionString.

applySettings()

Utiliza la configuración del clúster especificada en un objeto ClusterSettings.

hosts()

Establece todas las ubicaciones especificadas de un servidor Mongo.

localThreshold()

Define la cantidad de tiempo que puede tomar un viaje de ida y vuelta a un servidor y aún ser elegible para la selección de servidor.

mode()

Define cómo conectarse a un servidor MongoDB.

requiredClusterType()

Establece el tipo de clúster requerido para el clúster.

requiredReplicaSetName()

Establece el nombre del set de réplicas requerido para el clúster.

serverSelectionTimeout()

Establece el tiempo máximo para seleccionar un nodo primario antes de lanzar una excepción por tiempo de espera.

serverSelector()

Agrega un selector de servidor para aplicar antes de la selección del servidor.

srvHost()

Establece el nombre del host a usar para buscar un registro SRV DNS y encontrar los hosts de MongoDB.

Al configurar srvHost, el driver no procesa ningún registro TXT asociado al host.

Si deseas habilitar el procesamiento de registros TXT, debes especificar el host SRV en la cadena de conexión utilizando el método applyConnectionString().

val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("mongodb+srv://host1.acme.com"))
.build()
)

srvMaxHosts()

Sets the maximum number of hosts the driver can connect to when using the DNS seedlist (SRV) connection protocol, identified by the mongodb+srv connection string prefix.

Throws an exception if you are not using the SRV connection protocol.

Este ejemplo especifica que el driver debe conectarse directamente a un servidor, independientemente del tipo de clúster MongoDB al que pertenezca:

val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyToClusterSettings{ builder ->
builder.mode(ClusterConnectionMode.SINGLE)
}
.build()
)

Tip

Esto es análogo al parámetro directConnection que puedes especificar en tu URI de conexión. Consulta Opciones de conexión para obtener más información.

Encadene el método applyToSocketSettings() para modificar el comportamiento del controlador al conectarse y comunicarse con su servidor MongoDB.

La siguiente tabla describe todos los métodos que puedes encadenar a tus parámetros para modificar el comportamiento del controlador:

Método
Descripción

applyConnectionString()

Usa los parámetros de un objeto ConnectionString.

applySettings()

Utiliza los ajustes de socket especificados en un objeto SocketSettings.

applyToProxySettings()

Aplica el bloque ProxySettings.Builder y luego establece el campo proxySettings.

connectTimeout()

Establece el tiempo máximo para conectarse a un socket disponible antes de lanzar una excepción por tiempo de espera.

readTimeout()

Establece el tiempo máximo para leer en un socket disponible antes de lanzar una excepción de tiempo de espera.

receiveBufferSize()

Establece el tamaño del búfer del socket al recibir.

sendBufferSize()

Establece el tamaño del búfer del socket al enviar.

Este ejemplo especifica el siguiente comportamiento del controlador en un socket de MongoDB:

  • Para conectarse a un socket disponible dentro de 10 SECONDS

  • Para leer de un socket disponible dentro de 15 SECONDS

val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("<your connection string>"))
.applyToSocketSettings{ builder ->
builder
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS)
}
.build()
)

Encadena el método applyToConnectionPoolSettings() para modificar la forma en que el driver administra su grupo de conexiones.

La siguiente tabla describe todos los métodos que puedes encadenar a tus parámetros para modificar el comportamiento del controlador:

Método
Descripción

addConnectionPoolListener()

Agrega un listener para eventos relacionados con el pool de conexiones.

applyConnectionString()

Usa los parámetros de un objeto ConnectionString.

applySettings()

Utiliza la configuración del pool de conexiones especificada en un objeto ConnectionPoolSettings.

maintenanceFrequency()

Establece la frecuencia para ejecutar una tarea de mantenimiento.

maintenanceInitialDelay()

Establece el tiempo de espera antes de ejecutar la primera tarea de mantenimiento.

maxConnectionIdleTime()

Establece el tiempo máximo que una conexión puede estar inactiva antes de que se cierre.

maxConnectionLifeTime()

Establece el tiempo máximo que una conexión agrupada puede estar activa antes de ser cerrada.

maxWaitTime()

Establece el tiempo máximo para esperar a una conexión disponible.

maxSize()

Establece la cantidad máxima de conexiones asociadas con un pool de conexiones.

minSize()

Establece la cantidad mínima de conexiones asociadas a un pool de conexiones.

Nota

Esta configuración de maxSize y minSize se aplica a cada servidor del clúster al que conecte 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.

Este ejemplo especifica el siguiente comportamiento del controlador en una agrupación de Connection tipos:

  • El hilo para esperar como máximo 10 SECONDS por una conexión disponible

  • Tener como máximo 200 conexiones asociadas al pool

val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("<your connection string>"))
.applyToConnectionPoolSettings{ builder ->
builder
.maxWaitTime(10, TimeUnit.SECONDS)
.maxSize(200)
}
.build()
)

Encadena el método applyToServerSettings() para modificar el comportamiento del controlador al monitorizar cada servidor MongoDB.

La siguiente tabla describe todos los métodos que puedes encadenar a tus parámetros para modificar el comportamiento del controlador:

Método
Descripción

addServerListener()

Agrega un oyente para eventos relacionados con el servidor.

addServerMonitorListener()

Agrega un escuchador para eventos relacionados con el monitor del servidor.

applyConnectionString()

Usa los parámetros de un objeto ConnectionString.

applySettings()

Utiliza la configuración del servidor especificada en un objeto ServerSettings.

heartbeatFrequency()

Establece el intervalo para que un monitor de clúster intente acceder a un servidor.

minHeartbeatFrequency()

Establece el intervalo mínimo para las verificaciones de supervisión del servidor.

serverMonitoringMode()

Especifica qué protocolo de supervisión del servidor utiliza el driver.

Este ejemplo especifica el siguiente comportamiento del controlador en un servidor MongoDB:

  • El intervalo mínimo para las comprobaciones de supervisión del servidor debe ser al menos de 700 MILLISECONDS

  • El monitor del clúster intenta alcanzar un servidor cada 15 SECONDS

val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("<your connection string>"))
.applyToServerSettings{ builder ->
builder
.minHeartbeatFrequency(700, TimeUnit.MILLISECONDS)
.heartbeatFrequency(15, TimeUnit.SECONDS)
}
.build()
)

Encadena el método applyToSslSettings() para modificar el comportamiento del controlador al utilizar TLS/SSL para asegurar una conexión entre la aplicación y MongoDB.

La siguiente tabla describe todos los métodos que puedes encadenar a tus parámetros para modificar el comportamiento del controlador:

Método
Descripción

applyConnectionString()

Usa los parámetros de un objeto ConnectionString.

applySettings()

Utiliza la configuración de TLS/SSL especificada en un objeto SslSettings.

context()

Establece el SSLContext para usar cuando habilites TLS/SSL.

enabled()

Si se debe habilitar TLS/SSL. (Debe habilitar esto para los clústeres de Atlas).

invalidHostNameAllowed()

Si permitir o no una discrepancia entre el nombre de host del servidor y el especificado por el certificado TLS.

Este ejemplo especifica que el controlador debe habilitar TLS/SSL al conectarse a MongoDB:

val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("<your connection string>"))
.applyToSslSettings{ builder ->
builder.enabled(true)
}
.build()
)

Volver

Pools de conexiones

En esta página