Overview
在本指南中,您可以学习;了解Java Reactive Streams驾驶员如何使用连接池来管理与MongoDB 部署的连接,以及如何在应用程序中配置连接池设置。
连接池是由Java Reactive Streams驾驶员维护的打开数据库连接的缓存。当您的应用程序请求连接到MongoDB时, Java Reactive Streams驾驶员会无缝地从池中获取连接,执行操作并将连接返回到池中以供重用。
连接池有助于减少应用程序延迟和Java Reactive Streams驾驶员创建新连接的次数。
创建连接池
对于 MongoDB 拓扑结构中的每个服务器,每个 MongoClient 实例都有一个内置连接池。连接池按需打开套接字以支持多线程应用程序中的并发 MongoDB 操作。
maxPoolSize 选项设置每个连接池的最大大小,默认为 100。如果正在使用的服务器连接数达到 maxPoolSize 值,则对该服务器的下一个请求将等待,直到出现可用连接。
每个 MongoClient实例为MongoDB拓扑结构中的每个服务器再打开两个套接字,用于监控服务器的状态。
配置连接池
您可以使用连接字符串或将 MongoClientSettings对象传递给 MongoClients.create() 方法来指定连接池的设置。
选择 Connection String 或 MongoClientSettings标签页,查看相应的语法:
以下是可用于配置连接池的连接字符串设置:
设置 | 说明 |
|---|---|
| 池可以同时建立的最大连接数。 默认: |
| 连接在被删除和关闭之前可以在池中保持空闲状态的最大毫秒数。将此值设置为高于应用程序的预期空闲时间,但低于防火墙或代理连接超时,以防止意外断开连接。 默认: |
| 池中打开的最大连接数。如果操作需要新连接,而连接池有 默认: |
| 池中打开的最小连接数。 默认值: |
| |
| 指定Java Reactive Streams驾驶员在关闭连接之前继续使用池化连接的最长时间(以毫秒为单位)。值为 默认值: |
有关这些参数的更多信息,请参阅 ConnectionString API文档。
链接 applyToConnectionPoolSettings () 方法,以修改驱动程序管理其连接池的方式。
下表描述了可以链接到设置以修改驱动程序行为的方法:
方法 | 说明 |
|---|---|
| 添加监听器,用于监听与连接池相关的事件。 |
| 使用 |
| 使用在 |
| 设置连接池侦听器列表。 |
| 设置运行维护作业的频率。 |
| 设置运行第一个维护作业之前的等待时间。 |
| 设置连接在关闭之前可以空闲的最长时间。 |
| 设置池式连接在关闭之前可以存活的最长时间。 |
| 设置池可以同时建立的最大连接数。 |
| 设置与连接池关联的最大连接数。 默认值: |
| 设置等待可用连接的最长时间。 默认值: |
| 设置与连接池关联的最小连接数。 默认值: |
要学习;了解有关这些方法的更多信息,请参阅 ConnectionPoolSettings.Builder API文档。
例子
以下示例展示了如何创建最大大小为 50 个连接的连接池。
选择 Connection String 或 MongoClientSettings标签页,查看相应的语法:
ConnectionString connectionString = new ConnectionString("mongodb://<host>:<port>/?maxPoolSize=50"); try (MongoClient mongoClient = MongoClients.create(connectionString)) { }
try (MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString( new ConnectionString("<your connection string>")) .applyToConnectionPoolSettings(builder -> builder.maxSize(50)) .build())) {
更多信息
有关使用连接池的更多信息,请参阅服务器手册中的连接池文档。