Установка maxIdleTimeMS является ключевым моментом здесь.
Если вы используете AbstractMongoClientConfiguration, используйте приведенный ниже код, чтобы установить maxIdleTimeMS для MongoClientSettings
SSLContext.setDefault(sslContext);
String connectionTemplateString = "mongodb://%s:%s@%s/%s?maxIdleTimeMS=%s";
String clusterEndpoint = dbHost + ":" + port;
String maxIdleTimeInMs = "x";
String connectionString = String.format(connectionTemplateString, dbUser, dbPassword, clusterEndpoint,dbName, maxIdleTimeInMs);
ConnectionString connString = new ConnectionString(connectionString);
mongoClientSettings = MongoClientSettings.builder().applyConnectionString(connString)
.applyToSslSettings(builder -> {
builder.enabled(true);
builder.invalidHostNameAllowed(true);
builder.context(sslContext);
}).build();
Если вы используете сейчас неактивную AbstractMongoConfiguration, используйте приведенный ниже код для установки maxConnectionIdleTime для MongoClientOptions *
mongoClientOptions.maxConnectionIdleTime(x);
Эти изменения обеспечат, что после заданных вами x миллисекунд открытое соединение будет закрыто, а при поступлении нового запроса в вашу службу будет открыто новое соединение
Примеры журналов :
- Через x мс
Закрытое соединение [connectionId {localValue: 3}] с хостом: 27017, поскольку оно превышает максимально допустимое время простоя.
При поступлении нового запроса
Открытое соединение [connectionId {localValue: 4}] к хосту: 27017