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())) {
更多信息
有关使用连接池的更多信息,请参阅服务器手册中的连接池文档。