首页 > 解决方案 > Spring Boot 和 mongo db 中的连接池

问题描述

我正在通过 Spring Boot 应用程序和 mongoDb 连接 POC。我添加了以下依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

我还浏览了带有属性的 mongoB 属性:https ://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

请问我们如何在这里定义连接池机制?

标签: javaspringmongodbspring-bootconnection-pooling

解决方案


您不能使用应用程序属性开箱即用地执行此操作。您需要使用 MongoClientOptions 来配置连接池的各个方面。

查看文档以了解各种可用选项。

这是一个简单的例子。

@Bean(name="mongoTempl")
public MongoTemplate mongoTempl() throws Exception {
     return new MongoTemplate(createMongoClient(new ServerAddress(host, port))
                              ,dbName);
}


Mongo createMongoClient(ServerAddress serverAddress) {
final MongoClientOptions options = MongoClientOptions.builder()
        .threadsAllowedToBlockForConnectionMultiplier(...)
        .connectionsPerHost(...)
        .connectTimeout(...)
        .maxWaitTime(...)
        .socketKeepAlive(...)
        .socketTimeout(...)
        .heartbeatConnectTimeout(...)
        .minHeartbeatFrequency(...)
        .build();

        return new MongoClient(serverAddress, options);
}

推荐阅读