Overview
本节介绍Rust驱动程序中可用的MongoDB连接和身份验证选项。您可以使用连接 URI(也称为连接字符串)或在创建 Client 时在 ClientOptions实例上设置字段来配置连接。
使用连接 URI
如果将连接 URI 传递给 Client::with_uri_str 方法,则可以将连接选项作为 <name>=<value> 对包含在 string 中。以下示例显示了一个连接 URI,其中包含值为 60000 的 connectTimeoutMS 选项和值为 true 的 tls 选项:
use mongodb::Client; let uri = "mongodb://<hostname>:<port>/?connectTimeoutMS=60000&tls=true"; let client = Client::with_uri_str(uri).await?;
使用 ClientOptions
您可以在 ClientOptions实例上设立连接选项,而不是将它们包含在连接 URI 中。使用 ClientOptions实例配置连接时,您可以更轻松地在运行时更改设置并在编译期间捕获错误。以下示例展示了如何使用 ClientOptions设立连接选项:
use std::time::Duration; use mongodb::{Client, options::ClientOptions}; let uri = "mongodb://<hostname>:<port>/"; let mut client_options = ClientOptions::parse(uri).await?; client_options.connect_timeout = Some(Duration::from_secs(60000)); //Set additional options on client_options here let client = Client::with_options(client_options)?;
连接选项
以下部分介绍了Rust驱动程序中可用的连接选项。要查看连接选项的完整列表,请访问服务器手册指南中有关连接字符串的连接字符串选项部分。
网络压缩
超时
选项名称 | 接受的值 | 默认值 | 说明 |
|---|---|---|---|
connectTimeoutMS | Non-negative integer |
| 指定尝试连接到服务器时传递给每个底层 TCP 流的连接超时时间(以毫秒为单位)。 |
服务器选择
选项名称 | 接受的值 | 默认值 | 说明 |
|---|---|---|---|
heartbeatFrequencyMS | 大于或等于 500 的整数。 |
| 指定每个监控线程在执行服务器检查之间等待的时间(以毫秒为单位)。 |
maxStalenessSeconds |
|
| 指定从主节点开始的最大延迟时间(以秒为单位),在此时间内,可以将从节点(secondary node from replica set)视为可用于给定操作。 |
serverSelectionTimeoutMS | Non-negative integer |
| 指定 |
身份验证
选项名称 | 接受的值 | 默认值 | 说明 |
|---|---|---|---|
authMechanism | 字符串 | 无 | 指定要使用的身份验证机制。 如果不指定此选项,驱动程序将使用默认的身份验证机制。 要了解有关 Rust 驱动程序中身份验证的更多信息,请参阅身份验证机制指南。 |
authMechanismProperties | 字符串 | 无 | 为 |
authSource | 字符串 | 查看说明 | 指定用于身份验证的数据库。 |
TLS | 布尔 |
| 指定 |
tlsAllowInvalidCertificates | 布尔 |
| 指定如果服务器提供的证书无效, |
tlsCAFile | 字符串 | 查看说明 | 指定 |
tlsCertificateKeyFile | 字符串 | 无 | 指定 |
tlsCertificateKeyFilePassword | 字符串 | 无 | 如果密钥已加密,请指定用于解密证书文件中的私钥的密码。 |
tlsInsecure | 布尔 |
| 指定如果服务器提供的证书无效, |
读取和写入操作
选项名称 | 接受的值 | 默认值 | 说明 |
|---|---|---|---|
directConnection | 布尔 |
| 指定 |
enableOverloadRetargeting | 布尔 |
| 指定驱动程序是否降低返回过载错误的服务器的优先级,从而降低在同一台过载服务器上重试的可能性。 |
journal | 布尔 |
| 请求确认操作已传播到磁盘上日志。 |
localThresholdMS | Non-negative integer |
| 指定驱动程序与服务器之间的平均往返时间相对于所有合适服务器中最短往返时间所允许持续的毫秒数。 |
maxAdaptiveRetries | Non-negative integer |
| 指定驱动程序遇到过载错误时的最大重试次数。 |
readConcernLevel | 字符串 | 无 | 指定在 |
readPreference | 字符串 |
| 指定驱动程序如何将读取操作路由到副本集的节点。 |
readPreferenceTags | 以逗号分隔的键值对列表 | 无 | 指定可以考虑进行操作的副本集成员。此密钥的每个实例都是一个独立的标签集。 |
replicaSet | 字符串 | 无 | 指定 |
retryReads | 布尔 |
| 指定在操作失败时客户端是否重试读取操作。 |
w | 非负整数或字符串 | 无 | 请求确认操作已传播到特定数量或类型的服务器。 |
wtimeoutMS | Non-negative integer | 无超时 | 指定写关注(write concern)的时间限制(以毫秒为单位)。 |
连接池
选项名称 | 接受的值 | 默认值 | 说明 |
|---|---|---|---|
maxIdleTimeMS | Non-negative integer |
| 指定连接在连接池中可以保持空闲状态的时间量(以毫秒为单位),直到服务器关闭该连接。 |
maxPoolSize | Non-negative integer |
| 指定 |
minPoolSize | Non-negative integer |
| 指定服务器连接池在给定时间内可用的最小连接数。 |
有关连接池的更多信息,请参阅 连接池指南。
常规
选项名称 | 接受的值 | 默认值 | 说明 |
|---|---|---|---|
appName | 字符串 | 无 | 指定 |
API 文档
有关 Rust 驱动程序 的 ClientOptions 的更多信息,请参阅 ClientOptions 的 API 文档。