Overview
在本指南中,您可以学习如何使用 Java 驱动程序管理集群。
您可以使用连接字符串或将 MongoClientSettings 对象传递给MongoClient 构造函数来指定集群的设置。选择 Connection
String 或 MongoClientSettings标签页,查看可用选项:
在连接字符串中包含以下参数,以修改驱动程序在与MongoDB 集群交互时的行为:
选项名称 | 类型 | 说明 |
|---|---|---|
| 整型 | 指定驱动程序在抛出异常之前等待服务器选择成功的最长时间(以毫秒为单位)。 默认: |
| 整型 | 与副本集中的多个MongoDB实例通信时,驱动程序仅向响应时间小于或等于最快响应服务器加上本地阈值(以毫秒为单位)的服务器发送请求。 默认值: |
| 字符串 | 指定所提供的连接字符串包含多个主机。指定后,驱动程序会尝试查找该集合的所有节点。 默认值: |
| 布尔 | 指定驱动程序必须直接连接到托管。这对应于将 默认值: |
| 布尔 | 指定驱动程序是否使用负载均衡器连接到MongoDB。 默认值: |
| 字符串 | 指定 SRV 资源记录的服务名称,驱动程序会检索该名称来构建您的种子列表。您必须在连接 URI 中使用 DNS 种子列表连接格式才能使用此选项。 默认值: |
| 字符串 | 指定驱动程序用于验证 SRV 记录查找返回的主机名的域名后缀。设置此选项后,驱动程序会根据指定的后缀验证主机名,而不是根据从 SRV 主机名推断出的域名进行验证。如果该值不以句点 ( 您只能将此选项与 默认: |
此示例将驱动程序直接连接到服务器,无论它属于哪种类型的MongoDB 集群:
ConnectionString connectionString = "mongodb://<host>:<port>/?directConnection=true"MongoClient mongoClient = MongoClients.create(connectionString)警告
更改默认的 SRV 托管名称验证可能会产生安全漏洞,因为它放宽了针对 DNS 欺骗的内置保护措施。指定涵盖部署中托管的最窄后缀。示例,如果您的 SRV 托管名称是 cluster.test.internal.example.com,请将 srvAllowedHostsSuffix 设置为 .internal.example.com。请勿将其设置为 .example.com,这会接受 example.com 域中的任何托管。
有关这些参数的更多信息,请参阅 ConnectionString API文档。
链式调用 applyToClusterSettings() 方法以修改驱动程序与您的 MongoDB 集群交互时的行为。
下表描述了可以链接到设置以修改驱动程序行为的方法:
方法 | 说明 |
|---|---|
| 为集群相关事件添加侦听器。 |
| 使用 |
| 使用在 |
| 设置 Mongo 部署的所有指定位置。 |
| 设置服务器往返可能所需的时间,以及是否仍符合服务器选择条件。 默认值: |
| 设置如何连接到 MongoDB 部署。 |
| 设置集群所需的集群类型。 |
| 设置集群所需的副本集名称。 |
| 设置在抛出超时异常之前选择主节点的最长时间。 默认值: |
| 添加服务器选择器,在选择服务器前应用。 |
| 设置用于查找 SRV DNS 记录的主机名,以查找 MongoDB 主机。 如果要启用与托管关联的 TXT 记录的处理,请使用 例如: |
| 设置使用 DNS 种子列表 (SRV) 连接协议(由 如果不使用 SRV 连接协议,则会引发异常。 |
| 设置驱动程序用于验证 SRV 记录查找返回的主机名的域名后缀,而不是从 SRV 主机名推断出的域名。如果该值不以句点 ( |
此示例将驱动程序直接连接到服务器,无论它属于哪种类型的MongoDB 集群:
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.mode(ClusterConnectionMode.SINGLE)) .build());提示
这类似于您可以在连接 URI 中指定的 directConnection 参数。有关详细信息,请参阅连接字符串标签页。
警告
更改默认的 SRV 托管名称验证可能会产生安全漏洞,因为它放宽了针对 DNS 欺骗的内置保护措施。指定涵盖部署中托管的最窄后缀。示例,如果您的 SRV 托管名称是 cluster.test.internal.example.com,请将 ".internal.example.com" 传递给 srvAllowedHostsSuffix()。不要传递 ".example.com",它接受 example.com 域中的任何托管。
有关链式方法的更多信息,请参阅 MongoClientSettings.Builder API文档。