Spring Boot和mongo db中的连接池

4
2个回答

1

您无法通过应用程序属性来直接完成此操作。您需要使用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);
}

1
通过快速查看,我可以看到MongoClientSettings是你应该使用的。 - pvpkiran

1

您也可以使用MongoClientSettingsBuilderCustomizer,就像在此Spring 示例中一样。

@Bean
public MongoClientSettingsBuilderCustomizer customizer() {
    return (builder) -> builder.applyToConnectionPoolSettings(
            (connectionPool) -> {
                connectionPool.maxSize(10);
                connectionPool.minSize(2);
                connectionPool.maxConnectionIdleTime(5, TimeUnit.MINUTES);
                connectionPool.maxWaitTime(2, TimeUnit.MINUTES);
                connectionPool.maxConnectionLifeTime(30, TimeUnit.MINUTES);
                connectionPool.addConnectionPoolListener();
            });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接