Set Mongo Timeout in Spring Boot

后端 未结 7 1156
失恋的感觉
失恋的感觉 2020-12-30 10:21

I am using spring boot web application which connects to mongo db which is working out of the box. I just use the following properties:

spring.data.mongodb.h         


        
7条回答
  •  粉色の甜心
    2020-12-30 11:01

    The question was specifically for Spring boot. I am using the following approach which works well, please suggest if there is a way not to use new and use Spring for configuring it.

     import java.util.ArrayList;
     import java.util.List;
     import org.springframework.beans.factory.annotation.Value;
     import org.springframework.context.annotation.Bean;
     import org.springframework.context.annotation.Configuration;
     import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
     import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
     import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
     import com.mongodb.Mongo;
     import com.mongodb.MongoClient;
     import com.mongodb.MongoClientOptions;
     import com.mongodb.MongoCredential;
     import com.mongodb.ServerAddress;
    
     @Configuration
     @EnableMongoRepositories("com.myapp.repository")
     public class SpringMongoConfig extends AbstractMongoConfiguration {
    
    @Value("${myapp.mongodb.host}")
    private String host;
    
    @Value("${myapp.mongodb.port}")
    private int port;
    
    @Value("${myapp.mongodb.database}")
    private String mongoDB;
    
    @Value("${myapp.mongodb.userName}")
    private String userName;
    
    @Value("${myapp.mongodb.password}")
    private String password;
    
    @Value("${myapp.mongodb.socketTimeoutMS}")
    private int socketTimeout;
    
    @Value("${myapp.mongodb.connectionTimeoutMS}")
    private int connectionTimeout;
    
    @Override
    public MongoMappingContext mongoMappingContext() throws ClassNotFoundException {
    return super.mongoMappingContext();
    }
    
    @Override
    @Bean
    public Mongo mongo() throws Exception {
    
    List servers = new ArrayList();
    servers.add(new ServerAddress(host, port));
    
    List creds = new ArrayList();
    creds.add(MongoCredential.createCredential(userName, mongoDB, password.toCharArray()));
    
    MongoClientOptions builder = MongoClientOptions.builder().socketTimeout(socketTimeout).connectTimeout(connectionTimeout).build();
    
    return new MongoClient(servers, creds, builder);
    }
    
    @Override
    protected String getDatabaseName() {
    return mongoDB;
    }
    }
    

提交回复
热议问题