Me gustaría reducir la configuración de tiempo de espera en mi aplicación java spring-mongo (la consulta debería fallar después de 300 ms si no se puede acceder a la base de datos).
Probé esta configuración:
@Configuration public class MongoConfiguration { private String mongoUri = "mongodb://127.0.0.1:27017/myDb?connectTimeoutMS=300&socketTimeoutMS=300&waitQueueTimeoutMS=300&wtimeoutMS=300"; @Bean public MongoDbFactory mongoDbFactory() throws Exception { Builder options = new MongoClientOptions.Builder().socketTimeout(300).connectTimeout(300).maxWaitTime(300); return new SimpleMongoDbFactory(new MongoClientURI(mongoUri, options)); } @Bean public MongoTemplate mongoTemplate() throws Exception { MongoDbFactory mongoDbFactory = mongoDbFactory(); MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory); return mongoTemplate; } }Pero las opciones de mongoUri ni el generador cambian el tiempo de espera: la consulta falla solo después de 30 000 ms.
No estoy seguro de qué parámetro debo anular ni la forma de hacerlo correctamente.
Gracias por tu ayuda
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.9.5.RELEASE</version> </dependency>Encontré la respuesta aquí: https://scalegrid.io/blog/understanding-mongodb-client-timeout-options/
@Bean public MongoDbFactory mongoDbFactory() throws Exception { MongoClientOptions.Builder optionsBuilder = MongoClientOptions.builder(); optionsBuilder.connectTimeout(300); optionsBuilder.socketTimeout(300); optionsBuilder.serverSelectionTimeout(300); return new SimpleMongoDbFactory(new MongoClientURI(mongoUri, optionsBuilder)); }