Grails 3 - MongoDB 的 GORM - 副本集的最近读取

Grails 3 - GORM for MongoDB - nearest read for replica set

我正在将我的 Grails 2.4 Web 应用程序升级到 Grails 3,我正在考虑为我的 Mongo 数据库从我的自定义 DAO 切换到 GORM。

我试图了解如何正确设置 GORM,特别是关于连接 options,但它的文档对我有点误导。 Advanced Configuration ("Mongo Database Connection Configuration") 状态

Available options and their descriptions are defined in the MongoOptions javadoc.

所以我很想假设我可以使用这些选项中的任何一个。

但稍后在同一部分(配置选项指南)我阅读了

Below is a complete example showing all configuration options:

仅显示 9 个选项。

我的问题是 'converting' 我的自定义 DAO

MongoClientOptions options = new MongoClientOptions .Builder()
                                                    .connectionsPerHost(1000)
                                                    .threadsAllowedToBlockForConnectionMultiplier(5)
                                                    .maxWaitTime(4000)
                                                    .socketTimeout(2000).build();
List<ServerAddress> list = getMongoReplicaSet();
mongo = new MongoClient(list, options);
mongo.setReadPreference(ReadPreference.nearest());

等效配置

grails {
    mongodb {
        options {
            connectionsPerHost = 1000
            threadsAllowedToBlockForConnectionMultiplier = 5
            maxWaitTime = 4000
            socketTimeout = 2000
        }
    }
}

但是如何定义阅读偏好?我可以做这样的事情吗?

grails {
    mongodb {
        options {
            readPreference = com.mongodb.ReadPreference.nearest()
        }
    }
}

提前致谢!

是的,您可以通过配置在 MongoClientOptions.Builder class 中设置任何内容。虽然你语法错误,但应该是:

grails {
   mongodb {
      options {
        readPreference = com.mongodb.ReadPreference.nearest()
      }
   }
}