文档菜单
文档首页
/ / /
Kotlin 同步驱动程序
/

指定连接选项

本页内容

  • 概述
  • 在连接 URI 中设置选项
  • 在MongoClientSettings中设置选项
  • 连接选项
  • 网络压缩
  • 超时
  • 服务器选择
  • 身份验证
  • 读写操作
  • 附加信息
  • API 文档

本节描述了Kotlin Sync驱动程序中可用的MongoDB连接和身份验证选项。您可以通过设置连接URI或MongoClientSettings实例中的选项来配置您的连接。

如果您将连接URI传递给MongoClient.create()方法,您可以在字符串中以<name>=<value>对的形式包含连接选项。在以下示例中,连接URI包含值为60000connectTimeoutMS选项和值为truetls选项

val uri = "mongodb://<hostname>:<port>/?connectTimeoutMS=60000&tls=true"
val mongoClient = MongoClient.create(uri)

您可以使用MongoClientSettings.Builder类中的方法在MongoClientSettings实例中设置连接选项,然后将设置对象传递给MongoClient.create()方法。

以这种方式配置连接可以使在运行时更改设置更加容易,并且有助于您在编译时捕获错误。

以下示例显示了在创建 MongoClientSettings 实例时如何指定您的连接目标和设置其他选项。

val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("localhost", 27017))) }
.applyToSocketSettings { builder -> builder.connectTimeout(60000, TimeUnit.MILLISECONDS) }
.applyToSslSettings { builder -> builder.enabled(true) }
.build()
val mongoClient = MongoClient.create(settings)

如果您更愿意提供连接字符串而不是指定主机名和端口号,可以使用 applyConnectionString() 方法,然后使用构建器方法设置其他选项,如下面的代码所示。

val uri = "<connection string>"
val settings = MongoClientSettings.builder()
.applyConnectionString(ConnectionString(uri))
.applyToSocketSettings { builder -> builder.connectTimeout(60000, TimeUnit.MILLISECONDS) }
.applyToSslSettings { builder -> builder.enabled(true) }
.build()
val mongoClient = MongoClient.create(settings)

以下各节描述了 Kotlin 同步驱动器中可用的连接选项。每个选项都显示了您可以在连接 URI 中使用的选项-值对,以及如果可用,则在 MongoClientSettings 实例中设置它的驱动器方法。

连接选项
描述
compressors
按顺序排列的首选压缩类型,用于发送到或从服务器接收的线协议消息。驱动器使用服务器支持的第一种压缩类型。

数据类型:以逗号分隔的字符串
MongoClientSettingscompressorList(listOf(<MongoCompressor>))
连接 URIcompressors=snappy,zstd,zlib
zlibCompressionLevel
zlib要使用的压缩级别。此选项接受介于 -19 之间的整数值,对应以下设置

- -1:(默认)。zlib使用其默认压缩级别(通常为 6)。
- 0:不压缩。
- 1:最快速度但压缩程度最低。
- 9:最佳压缩但速度最慢。

数据类型:整数
默认值-1
MongoClientSettingscompressorList(listOf(zlib.withProperty(MongoCompressor.LEVEL, 3)))
连接 URIzlibCompressionLevel=3
连接选项
描述
connectTimeoutMS
尝试连接并在超时之前的时间(毫秒)。

数据类型:整数
默认值: 10000
MongoClientSettings:
applyToSocketSettings{ builder ->
builder.connectTimeout(10, TimeUnit.SECONDS)
}
连接 URI: timeoutMs=10000
socketTimeoutMS
在尝试发送或接收连接并在尝试超时之前的时间(毫秒)。

数据类型:整数
默认值: 没有超时
MongoClientSettings:
applyToSocketSettings{ builder ->
builder.readTimeout(5, TimeUnit.SECONDS)
}
连接 URI: socketTimeoutMS=5000
连接选项
描述
serverSelectionTimeoutMS
驱动程序在抛出异常之前,等待服务器选择成功的最大时间(毫秒)。

数据类型:整数
默认值: 30000
MongoClientSettings:
applyToClusterSettings{ builder ->
builder.serverSelectionTimeout(30, TimeUnit.SECONDS)
}
连接 URI: serverSelectionTimeoutMS=30000
连接选项
描述
authMechanism
Kotlin 同步驱动程序用于对应用程序进行身份验证的机制。

数据类型: 字符串
默认值: 当连接到 MongoDB v4.0 或更高版本时为 "SCRAM-SHA-256"
MongoClientSettings:
credential(
MongoCredential.createScramSha256Credential(...)
)
连接 URI: authMechanism=SCRAM-SHA-256
authMechanismProperties
特定于身份验证机制的选项。此选项并非对所有身份验证机制都需要。

数据类型: 字符串
连接 URI: authMechanismProperties=AWS_SESSION_TOKEN:12435
authSource
用于身份验证的数据库。

数据类型: 字符串
默认值: "admin"
连接 URI: authSource=admin
用户名
用于认证的用户名。当此选项包含在连接URI中时,必须对它进行百分号编码。

数据类型: 字符串
连接URI: username=my+user
密码
用于认证的密码。当此选项包含在连接URI中时,必须对它进行百分号编码。

数据类型: 字符串
连接URI: password=strong+password

要了解如何连接到不同类型的MongoDB部署,请参阅选择连接目标指南。

连接选项
描述
replicaSet
指定要连接的副本集的名称。

数据类型: 字符串
连接URI: replicaSet=myRS
directConnection
是否只连接到副本集的主成员。

数据类型: boolean
默认值: false
MongoClientSettings:
applyToClusterSettings{ builder ->
builder.mode(ClusterConnectionMode.SINGLE)
}
连接URI: directConnection=true
readPreference
指定客户端的读取偏好。有关更多信息,请参阅服务器手册中的读取偏好

数据类型: 字符串
默认值: primary
MongoClientSettings: readPreference(ReadPreference.primary())
连接URI: readPreference=primary
readConcern
指定客户端的读取关注点。有关更多信息,请参阅服务器手册中的读取关注点

数据类型: 字符串
MongoClientSettings: readConcern(ReadConcern.MAJORITY)
连接URI: readConcern=majority
writeConcern
指定客户端的写入关注点。有关更多信息,请参阅服务器手册中的写入关注点

数据类型: 字符串
MongoClientSettings: writeConcern(WriteConcern.MAJORITY)
连接URI: writeConcern=majority
localThresholdMS
副本集成员资格的延迟窗口。如果一个成员的往返ping时间超过最快服务器的往返ping时间加上此值,则服务器不符合选择条件。

数据类型:整数
默认值: 15
MongoClientSettings:
applyToClusterSettings{ builder ->
builder.localThreshold(35, TimeUnit.MILLISECONDS)
}
连接URIlocalThresholdMS=35

要查看完整的连接选项列表,请参阅服务器手册中的连接字符串

要了解更多关于本指南中提到的类和方法,请参阅以下API文档

返回

选择连接目标