如何在 Spring Data MongoDb 存储库方法上设置 maxTimeMS

问题描述 投票:0回答:1

Spring Data MongoDB Repository 提供了很多有用的方法来生成查询,例如派生查询和 CRUD 操作。例如:

public interface UserMongoRepository extends MongoRepository<User, UUID> {
    List<User> findByUserName(String userName);
...

以及

findById
,例如
userMongoRepository.findById(uuid);

有没有办法全局设置附加参数或作为这些 Spring Data 方法的参数来设置 MongoDB $maxTimeMS 参数。否则,我将需要重写所有这些派生查询以使用

Query
类,实例化一个新的
Query
对象并设置
.maxTimeMsec()
方法。

spring-data-mongodb
1个回答
0
投票

经过一番研究,我发现这适合您的情况: 我没有测试情况请测试一下。

@Configuration
public class MongoConfig {

@Bean
public MongoClientSettingsBuilderCustomizer mongoClientSettings() {
    return custom -> custom.applyToSocketSettings(builder ->
                    // this section
                    builder.connectTimeout(3, TimeUnit.SECONDS)
                            .readTimeout(3, TimeUnit.SECONDS))
                   // until here
            .applyToConnectionPoolSettings(builder ->
                    builder.maxSize(10)
                            .minSize(1)
                            .maxConnectionIdleTime(3, TimeUnit.SECONDS)
                            .maxWaitTime(10, TimeUnit.SECONDS))
            .applyToClusterSettings(builder ->
                    builder.serverSelectionTimeout(3, TimeUnit.SECONDS))
            .applicationName("applicationName");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.