Change default Mongo connection pool size in spring-boot Change default Mongo connection pool size in spring-boot mongodb mongodb

Change default Mongo connection pool size in spring-boot


You can configure connection parameters by uri.

spring.data.mongodb.uri=mongodb://localhost:27017/?connectTimeoutMS=300000&minPoolSize=0&maxPoolSize=10&maxIdleTimeMS=900000

Please see the following documentation for other parameters.

https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options


You can configure connection pool size via MongoDb uri parameters. Details - https://stackoverflow.com/a/50407284/6629515


With updated Spring boot(2.0.0 +) and Mongo DB java(3.9 +) driver versions following code can be used for creating configurable mongo template in spring boot.

Most of the configurations that were earlier part of MongoClientOptions are moved to MongoClientSettings.

import com.mongodb.*;import com.mongodb.client.MongoClient;import com.mongodb.client.MongoClients;import com.mongodb.connection.*;import org.springframework.data.mongodb.core.MongoTemplate;@Configurationpublic class MongoConfig {    //-- variables     @Bean(name = "mongoTemplate")    public MongoTemplate getMongoTemplate(){        MongoTemplate mongoTemplate = new MongoTemplate(getMongoClient(), mongoDatabaseName);        return mongoTemplate;    }    private MongoClient getMongoClient(){        List<ServerAddress> serverAddressList = new ArrayList<>();        String[] hostPortList = mongoHostPortList.split(",");        for (String serverAddress : hostPortList) {            String[] hostPortArr = serverAddress.split(":");            serverAddressList.add(new ServerAddress(hostPortArr[0], Integer.parseInt(hostPortArr[1])));        }        MongoClientSettings mongoSettingsProperties = getMongoClientSettings();        MongoClient mongoClient = MongoClients.create(mongoSettingsProperties);        return mongoClient;    }    private MongoClientSettings getMongoClientSettings() {        return MongoClientSettings.builder()                .applicationName(appName)                .applyToSslSettings(sslBuilder ->                        SslSettings.builder().                                enabled(sslEnabled).                                invalidHostNameAllowed(false).build())                .applyToConnectionPoolSettings(connPoolBuilder ->                        ConnectionPoolSettings.builder().                                maxWaitTime(maxWaitTime, MILLISECONDS).                                maxSize(connectionPoolMinSize).                                maxSize(connectionPoolMaxSize).build())                .applyToSocketSettings(socketBuilder ->                        SocketSettings.builder().                                connectTimeout(connectionTimeout,MILLISECONDS).build())                .readPreference(ReadPreference.secondaryPreferred())                .build();    }}

Above code is verified with dependencies -

    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-data-mongodb</artifactId>        <version>2.3.1.RELEASE</version>    </dependency>    <dependency>        <groupId>org.mongodb</groupId>        <artifactId>mongo-java-driver</artifactId>        <version>3.11.2</version>    </dependency>