Menu Docs
Página inicial do Docs
/ / /
Kotlin Coroutine
/ /

Especificar configurações do MongoClient

Nesta página

  • Visão geral
  • Configurações do MongoClient
  • Configurações de clusters
  • Configurações do soquete
  • Configurações do Pool de Conexões
  • Configurações do Servidor
  • Configurações TLS/SSL

Neste guia, você aprenderá sobre as diferentes configurações para controlar o comportamento do seu MongoClient.

As seções a seguir descrevem as configurações comumente usadas:

  • Configurações do MongoClient

  • Configurações de clusters

  • Configurações do soquete

  • Configurações do Pool de Conexões

  • Configurações do Servidor

  • Configurações TLS/SSL

Você pode controlar o comportamento do seu criando MongoClient e passando um objeto MongoClientSettings para o método MongoClient.create()

Para criar um objeto MongoClientSettings, utilize o método MongoClientSettings.builder() e métodos de cadeia para especificar suas configurações. Após encadeá-los, use o método build() para criar o objeto MongoClientSettings.

A tabela a seguir descreve todos os métodos que você pode criar para modificar seu comportamento de conexão:

Método
Descrição

addCommandListener()

Adiciona um ouvinte paraeventos de comando .

applicationName()

Define o nome lógico do aplicativo utilizando o MongoClient.

applyConnectionString()

Aplica as configurações do ConnectionString fornecido ao construtor. Se você omitir este método, o driver tentará se conectar ao localhost.

applyToClusterSettings()

Aplica o ClusterSettings.Builder bloco e, em seguida, define as configurações do cluster.

applyToConnectionPoolSettings()

Aplica o ConnectionPoolSettings.Builder bloco e, em seguida, define as configurações do pool de conexões .

applyToServerSettings()

Aplica o ServerSettings.Builder bloco e, em seguida, define as configurações do servidor .

applyToSocketSettings()

Aplica o SocketSettings.Builder bloco e, em seguida, define as configurações do soquete.

applyToSslSettings()

Aplica o SslSettings.Builder bloco e, em seguida, define as configurações TLS/SSL.

autoEncryptionSettings()

codecRegistry()

Define o registro do codec. Define o registro do codec.

commandListenerList()

compressorList()

Define os compressores a serem usados para comprimir mensagens para o servidor.

credential()

Define a credencial.

readConcern()

readPreference()

retryReads()

Se o driver deve tentar ler novamente se ocorrer um erro de rede.

retryWrites()

Se o driver deve tentar novamente as gravações se ocorrer um erro de rede.

serverApi()

Define a API do servidor a ser usada ao enviar comandos para o servidor.

streamFactoryFactory()

Define a fábrica para utilizar para criar um StreamFactory.

uuidRepresentation()

Define a representação UUID para utilizar ao codificar instâncias de UUID e decodificando valores binários BSON com subtipo de 3.

writeConcern()

Este exemplo demonstra a especificação de um ConnectionString:

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

Dica

Cada configuração possui um método applyConnectionString() . Eles raramente são necessários nas configurações, portanto, você deve usar esse método conforme mostrado no exemplo anterior.

Observação

Ordem de corrente

Algumas opções no mapa de configurações para uma opção de cadeia de conexão. Se você especificar as mesmas opções em suas configurações e na cadeia de conexão, a ordem em que você as encadear determinará qual opção o driver usará. O driver usa a última configuração lida.

Por exemplo, esse trecho contém configurações com os seguintes horários para o driver se conectar a um soquete disponível:

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()
)

Como o driver lê as opções de configurações de soquete por último, o driver espera se conectar a um soquete disponível dentro de 5 SECONDS antes de atingir o tempo limite.

Dica

Registre suas Configurações

Para registrar as configurações de instância do MongoClient, defina o org.mongodb.driver.client denominado logger para o nível INFO.

Para saber mais sobre como registrar com o MongoDB Kotlin Driver, consulte o Guia de registro .

Encadeie o método applyToClusterSettings() para modificar o comportamento do driver ao interagir com o cluster do MongoDB.

A tabela a seguir descreve todos os métodos que você pode conectar às suas configurações para modificar o comportamento do driver:

Método
Descrição

addClusterListener()

Adiciona um ouvinte para eventos relacionados ao cluster.

applyConnectionString()

Usa as configurações de um objeto ConnectionString.

applySettings()

Utiliza as configurações de cluster especificadas em um objeto de ClusterSettings.

hosts()

Define todas as localizações especificadas de um servidor mongo.

localThreshold()

Define a quantidade de tempo que uma viagem de ida e volta do servidor pode levar e ainda ser elegível para a seleção do servidor.

mode()

Define como se conectar a um MongoDB Server.

requiredClusterType()

Define o tipo de cluster necessário para o cluster.

requiredReplicaSetName()

Define o nome do conjunto de réplicas necessário para o cluster.

serverSelectionTimeout()

Define o tempo máximo para selecionar um nó primário antes de lançar uma exceção de tempo limite.

serverSelector()

Adiciona um seletor de servidor para aplicar antes da seleção do servidor.

srvHost()

Define o nome do host a ser usado para procurar um registro DNS SRV para localizar os hosts MongoDB.

Ao configurar o srvHost, o driver não processa nenhum registro TXT associado associado ao host.

Se quiser ativar o processamento de registros TXT, será necessário especificar o host SRV na cadeia de conexão usando o 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.

Esse exemplo especifica que o driver deve se conectar diretamente a um servidor, independentemente do tipo de cluster MongoDB do qual ele faz parte:

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

Dica

Isto é análogo ao parâmetro directConnection que você pode especificar em seu URI de conexão. Consulte Opções de Conexão para obter mais informações.

Encadeie o applyToSocketSettings() método para modificar o comportamento do driver ao se conectar e se comunicar com o servidor MongoDB.

A tabela a seguir descreve todos os métodos que você pode conectar às suas configurações para modificar o comportamento do driver:

Método
Descrição

applyConnectionString()

Usa as configurações de um objeto ConnectionString.

applySettings()

Utiliza as definições de terminais especificadas num objeto SocketSettings.

applyToProxySettings()

Aplica o bloco ProxySettings.Builder e, em seguida, define o campo proxySettings .

connectTimeout()

Define o tempo máximo para se conectar a um soquete disponível antes de lançar uma exceção de tempo limite.

readTimeout()

Define o tempo máximo para ler em um soquete disponível antes de lançar uma exceção de tempo limite.

receiveBufferSize()

Define o tamanho do buffer do soquete ao receber.

sendBufferSize()

Define o tamanho do buffer do soquete ao enviar.

Este exemplo especifica o seguinte comportamento do driver em um soquete do MongoDB:

  • Para se conectar a um soquete disponível em 10 SECONDS

  • Para ler um soquete disponível dentro 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()
)

Encadeie o método applyToConnectionPoolSettings() para modificar a maneira como o driver gerencia seu pool de conexões.

A tabela a seguir descreve todos os métodos que você pode conectar às suas configurações para modificar o comportamento do driver:

Método
Descrição

addConnectionPoolListener()

Adiciona um ouvinte para eventos relacionados ao pool de conexões.

applyConnectionString()

Usa as configurações de um objeto ConnectionString.

applySettings()

Usa as configurações do pool de conexões especificadas em um objeto ConnectionPoolSettings.

maintenanceFrequency()

Define a frequência para executar uma tarefa de manutenção.

maintenanceInitialDelay()

Define o tempo de espera antes de executar o primeiro trabalho de manutenção.

maxConnectionIdleTime()

Define o tempo máximo que uma conexão pode ficar ociosa antes de ser fechada.

maxConnectionLifeTime()

Define o tempo máximo que uma conexão em pool pode ficar ativa antes de ser fechada.

maxWaitTime()

Define o tempo máximo para aguardar uma conexão disponível.

maxSize()

Define a quantidade máxima de conexões associadas a um pool de conexões.

minSize()

Define a quantidade mínima de conexões associadas a um pool de conexões.

Observação

Estas configurações do maxSize e minSize se aplicam a cada servidor no cluster ao qual você conecta o driver.

Por exemplo, suponha que você conecte o driver a um cluster com três servidores mongos. Isto significa que pode haver no máximo maxSize conexões e pelo menos minSize conexões para cada servidor mongos.

Este exemplo especifica o seguinte comportamento do driver em um pool de tipos de Connection:

  • O thread que aguardará no máximo 10 SECONDS por uma conexão disponível

  • Ter no máximo 200 conexões associadas ao grupo

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

Encadeie o applyToServerSettings() método para modificar o comportamento do driver ao monitorar cada servidor MongoDB.

A tabela a seguir descreve todos os métodos que você pode conectar às suas configurações para modificar o comportamento do driver:

Método
Descrição

addServerListener()

Adiciona um ouvinte para eventos relacionados ao servidor.

addServerMonitorListener()

Adiciona um ouvinte para eventos relacionados ao monitoramento do servidor.

applyConnectionString()

Usa as configurações de um objeto ConnectionString.

applySettings()

Utiliza as configurações do servidor especificadas em um objeto ServerSettings.

heartbeatFrequency()

Define o intervalo para um monitor de cluster tentar alcançar um servidor.

minHeartbeatFrequency()

Define o intervalo mínimo para verificações de monitoramento do servidor.

serverMonitoringMode()

Especifica qual protocolo de monitoramento de servidor o driver usa.

Este exemplo especifica o seguinte comportamento do driver em um MongoDB Server:

  • O intervalo mínimo para verificações de monitoramento do servidor deve ser de pelo menos 700 MILLISECONDS

  • O monitor de cluster para tentar alcançar um servidor a 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()
)

Encadeie o método applyToSslSettings() para modificar o comportamento do driver ao usar TLS/SSL para proteger uma conexão entre o aplicativo e o MongoDB.

A tabela a seguir descreve todos os métodos que você pode conectar às suas configurações para modificar o comportamento do driver:

Método
Descrição

applyConnectionString()

Usa as configurações de um objeto ConnectionString.

applySettings()

Utiliza as configurações TLS/SSL especificadas em um objeto SslSettings.

context()

Define o SSLContext para uso quando você habilita TLS/SSL.

enabled()

Se o TLS/SSL deve ser habilitado. (Você deve habilitar isso para Atlas clusters.)

invalidHostNameAllowed()

Se permitir ou não uma incompatibilidade entre o nome de host do servidor e o nome de host especificado pelo certificado TLS.

Este exemplo especifica para o driver habilitar TLS/SSL ao conectar ao MongoDB:

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

Voltar

Opções de conexão