Docs Menu
Docs Home
/ /
/ / /

Especificar la configuración de MongoClient

En esta guía, podrá conocer las diferentes configuraciones para controlar el comportamiento de su MongoClient.

Las siguientes secciones describen configuraciones comúnmente utilizadas:

  • Configuración de MongoClient

  • Configuración del clúster

  • Configuración del socket

  • Configuración del grupo de conexiones

  • Configuración del servidor

  • Configuración de TLS/SSL

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

Para crear un objeto MongoClientSettings, utilice el método MongoClientSettings.builder() y los métodos de encadenamiento para especificar la configuración. Después de encadenarlos, utilice el método build() para crear el objeto MongoClientSettings.

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

Método
Descripción

addCommandListener()

Agrega un oyente para eventos de comando.

applicationName()

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

applyConnectionString()

Aplica la configuración del ConnectionString especificado al generador. Si se omite este método, el controlador intenta conectarse a localhost.

applyToClusterSettings()

Aplica el ClusterSettings.Builder bloque y luego establece la configuración del clúster.

applyToConnectionPoolSettings()

Aplica el ConnectionPoolSettings.Builder bloque y luego establece la configuración del grupo de conexiones.

applyToServerSettings()

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

applyToSocketSettings()

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

applyToSslSettings()

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

autoEncryptionSettings()

codecRegistry()

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

commandListenerList()

Establece los oyentes de comandos.

compressorList()

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

credential()

Establece la credencial.

readConcern()

readPreference()

retryReads()

Si el controlador debe volver a intentar la lectura si ocurre un error de red.

retryWrites()

Si el controlador debe volver a intentar escribir si ocurre un error de red.

serverApi()

Establece la API del servidor que se utilizará al enviar comandos al servidor.

streamFactoryFactory()

Establece la fábrica que se utilizará para crear un StreamFactory.

uuidRepresentation()

Establece la representación UUID que se utilizará al codificar instancias de UUID y decodificar valores binarios BSON con el 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. Rara vez applyConnectionString() se necesitan en la configuración, por lo que debería 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:

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, espera conectarse a un socket disponible dentro de 5 SECONDS antes de que se agote el tiempo de espera.

Tip

Registrar su configuración

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

Para obtener más información sobre el registro con el controlador MongoDB Kotlin, consulte la guía de registro.

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

La siguiente tabla describe todos los métodos que puede encadenar a su configuración para modificar el comportamiento del controlador:

Método
Descripción

addClusterListener()

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

applyConnectionString()

Utiliza la configuración de un objeto ConnectionString.

applySettings()

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

hosts()

Establece todas las ubicaciones especificadas de un servidor Mongo.

localThreshold()

Establece la cantidad de tiempo que puede tomar el viaje de ida y vuelta de 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 necesario para el clúster.

requiredReplicaSetName()

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

serverSelectionTimeout()

Establece el tiempo máximo para seleccionar un nodo principal antes de generar una excepción de tiempo de espera.

serverSelector()

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

srvHost()

Establece el nombre de host que se utilizará para buscar un registro DNS SRV para encontrar los hosts de MongoDB.

Al configurar srvHost, el controlador no procesa ningún registro TXT asociado con el host.

Si desea habilitar el procesamiento de registros TXT, debe 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 controlador se conecte directamente a un servidor, independientemente del tipo de clúster MongoDB del que forme parte:

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

Tip

Esto es similar al directConnection parámetro que puedes especificar en la URI de tu 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 puede encadenar a su configuración para modificar el comportamiento del controlador:

Método
Descripción

applyConnectionString()

Utiliza la configuración de un objeto ConnectionString.

applySettings()

Utiliza la configuración de socket especificada 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 generar una excepción de tiempo de espera.

readTimeout()

Establece el tiempo máximo para leer un socket disponible antes de generar 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 MongoDB:

  • Para conectarse a un socket disponible dentro 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()
)

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

La siguiente tabla describe todos los métodos que puede encadenar a su configuración para modificar el comportamiento del controlador:

Método
Descripción

addConnectionPoolListener()

Agrega un detector para eventos relacionados con el grupo de conexiones.

applyConnectionString()

Utiliza la configuración de un objeto ConnectionString.

applySettings()

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

maintenanceFrequency()

Establece la frecuencia para ejecutar un trabajo de mantenimiento.

maintenanceInitialDelay()

Establece el tiempo de espera antes de ejecutar el primer trabajo 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 cerrarse.

maxWaitTime()

Establece el tiempo máximo de espera para una conexión disponible.

maxSize()

Establece la cantidad máxima de conexiones asociadas a un grupo de conexiones.

minSize()

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

Nota

Estas configuraciones maxSize y minSize se aplican a cada servidor del clúster al que conecta el controlador.

Por ejemplo, supongamos que conecta el controlador a un clúster con tres servidores mongos. Esto significa que puede haber como máximo maxSize conexiones y al menos minSize conexiones a cada servidor mongos.

Este ejemplo especifica el siguiente comportamiento del controlador en un grupo de tipos Connection:

  • El hilo que debe 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()
)

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

La siguiente tabla describe todos los métodos que puede encadenar a su configuración para modificar el comportamiento del controlador:

Método
Descripción

addServerListener()

Agrega un detector de eventos relacionados con el servidor.

addServerMonitorListener()

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

applyConnectionString()

Utiliza la configuración de un objeto ConnectionString.

applySettings()

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

heartbeatFrequency()

Establece el intervalo que debe transcurrir para que un monitor de clúster intente comunicarse con un servidor.

minHeartbeatFrequency()

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

serverMonitoringMode()

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

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

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

  • El monitor del clúster intenta llegar a 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()
)

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

La siguiente tabla describe todos los métodos que puede encadenar a su configuración para modificar el comportamiento del controlador:

Método
Descripción

applyConnectionString()

Utiliza la configuración de un objeto ConnectionString.

applySettings()

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

context()

Establece SSLContext para usar cuando habilita 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