spring data mongodb 각종(timeout, cluster, socket...) 최신 설정법

유알·2024년 1월 13일
0

상황

실수로 몽고DB를 띄워놓지 않고, 서버를 틀고 API를 요청했더니, 약 30초간 응답을 기다리는 일이 발생했다.
그래서 디버깅을 해보니, MongoDbTimeout 예외가 발생했는데, 나는 이 30초라는 시간이 마음에 들지 않았다.

그래서 설정법을 찾아보았고, 최신 설정법을 공유한다.

@Configuration
public class MongoDBConfig {
	//...
    
    @Bean
    public MongoClientSettings mongoClientSettings() {
        final MongoClientSettings clientSettings = MongoClientSettings.builder()
                .retryWrites(true)
                .applyToConnectionPoolSettings((ConnectionPoolSettings.Builder builder) -> {
                    builder.maxSize(300) //connections count
                            .minSize(100)
                            .maxConnectionLifeTime(0, TimeUnit.MILLISECONDS)
                            .maxConnectionIdleTime(0, TimeUnit.MILLISECONDS)
                            .maxWaitTime(1000, TimeUnit.MILLISECONDS);
                })
                .applyToSocketSettings(builder -> {
                    builder.connectTimeout(5000, TimeUnit.MILLISECONDS);
                })
                .applyToClusterSettings(builder -> {
                    builder.serverSelectionTimeout(8000, TimeUnit.MILLISECONDS);
                })
                .build();
        return clientSettings;
    }

}
profile
더 좋은 구조를 고민하는 개발자 입니다

0개의 댓글