I would like to lower the timeout setting in my spring-mongo java application (the query should fail after 300 ms if the database is not accessible).
I tried this config:
@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;
}
}
But the mongoUri options nor the builder change the timeout: the query fails only after 30 000ms.
I am not sure which parameter I should override nor the way to do it properly.
Thanks for your help
org.mongodb
mongo-java-driver
3.4.0
org.springframework.data
spring-data-mongodb
1.9.5.RELEASE
解决方案@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));
}