복붙노트

[SPRING] Spring mongo 질의는 커스텀 타임 아웃을 설정한다.

SPRING

Spring mongo 질의는 커스텀 타임 아웃을 설정한다.

내 봄 - 몽고 자바 응용 프로그램에서 시간 제한 설정을 낮추고 싶습니다 (데이터베이스에 액세스 할 수없는 경우 300 밀리 초 후에 쿼리가 실패해야 함).

나는이 설정을 시도 :

@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;
}

}

하지만 mongoUri 옵션이나 빌더가 시간 초과를 변경합니다. 쿼리가 30 000ms 후에 만 ​​실패합니다.

어떤 매개 변수를 재정의해야하는지, 제대로 수행 할 수있는 방법이 확실하지 않습니다.

당신의 도움을 주셔서 감사합니다

    <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>

해결법

  1. ==============================

    1.나는 그 답을 여기에서 발견했다 : https://scalegrid.io/blog/understanding-mongodb-client-timeout-options/

    나는 그 답을 여기에서 발견했다 : 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));
    }
    
  2. from https://stackoverflow.com/questions/41766929/spring-mongo-queries-set-custom-timeout by cc-by-sa and MIT license