Overview
在本指南中,您可以学习;了解Scala驾驶员如何使用连接池来管理与MongoDB 部署的连接,以及如何在应用程序中配置连接池设置。
连接池是由Scala驾驶员维护的打开数据库连接的缓存。您的应用程序从池中检索连接,执行操作并返回连接以供重复使用。
使用连接池可以减少延迟,并最大限度地减少驾驶员创建新连接的次数。
创建连接池
对于MongoDB拓扑结构中的每个服务器,每个 MongoClient实例都有一个内置连接池。连接池按需打开套接字以支持应用程序中的并发MongoDB操作。
maxPoolSize 选项设置每个连接池的最大大小,默认为 100。如果正在使用的服务器连接数达到 maxPoolSize 值,则对该服务器的下一个请求将等待,直到出现可用连接。
每个 MongoClient实例为MongoDB拓扑结构中的每个服务器再打开两个套接字,用于监控服务器的状态。
配置连接池
您可以使用连接字符串或 MongoClientSettings对象配置连接池。
选择 Connection String 或 MongoClientSettings标签页,查看相应的语法:
下表描述了用于配置连接池的连接字符串选项:
选项 | 说明 |
|---|---|
| 驾驶员可以同时建立的最大连接数。 默认: |
| 在驾驶员关闭连接之前,连接在连接池中可以保持空闲状态的最大毫秒数。值为 默认: |
| 驾驶员一次可以在单个连接池打开的最大连接数。 默认: |
| 驾驶员在单个连接池维护的最小连接数。此值必须小于 默认: |
| |
| 连接可以保持打开状态的最大毫秒数。值为 默认: |
有关更多信息,请参阅 ConnectionString API文档。
将 applyToConnectionPoolSettings() 方法链接到 MongoClientSettings.Builder 类以配置连接池。下表描述了可以链接使用的 ConnectionPoolSettings.Builder 方法来配置池:
方法 | 说明 |
|---|---|
| 为连接池事件添加侦听器。 |
| 应用来自 |
| 应用来自 |
| 设置连接池监听器列表。 |
| 设置管理空闲和过期连接的定期作业的频率。 |
| 设置在连接池运行第一个维护作业之前的等待时间。 |
| 设置池连接的最大空闲时间。值为 |
| 设置池化连接的最长生命周期。值为 |
| 设置池可以同时建立的最大连接数。 默认: |
| 设置池中允许的最大连接数。 默认: |
| 设置等待可用连接的最长时间。 默认: |
| 设置驾驶员在池中维护的最小连接数。 默认: |
注意
maxSize() 和 minSize() 设置分别应用部署中的每台服务器,而不是应用于整个池。
要学习;了解更多信息,请参阅 ConnectionPoolSettings.Builder API文档。
例子
以下示例展示了如何创建最大连接数为 50 的连接池。
选择 Connection String 或 MongoClientSettings标签页,查看相应的语法:
val mongoClient = MongoClient("mongodb://<host>:<port>/?maxPoolSize=50")
val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString("<connection string>")) .applyToConnectionPoolSettings( (builder: ConnectionPoolSettings.Builder) => builder.maxSize(50)) .build() val mongoClientWithSettings = MongoClient(settings)
更多信息
有关使用连接池的更多信息,请参阅服务器手册中的连接池文档。
API 文档
要学习;了解有关本指南中讨论的类型和方法的更多信息,请参阅以下API文档: