如何将spring-data-mongodb配置为通过属性使用副本集

我目前正在编写一个应用程序,它应该使用MongoDB的副本集。它是一个基于Spring Boot的应用程序,以下属性可以很好地连接到一台服务器:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=demo

这对于我的本地开发环境来说绝对没问题。但是稍后它应该针对MongoDB副本集运行,因此我必须提供至少2个,更好的3个副本集种子,但是我如何使用属性执行此操作?

我看了一下这个页面:http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html,但提到的副本集没有显式属性。提供逗号分隔的地址列表,如下所示:

spring.data.mongodb.host=127.0.0.1,127.0.1.1,127.0.2.1
spring.data.mongodb.uri=mongo://127.0.0.1,mongo://127.0.0.1:27018

(我一个接一个地尝试。

这也不起作用(实际上,它会产生一个异常,允许Spring使用默认配置)。

我还尝试使用以下配置.xml,但没有运气:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:context="http://www.springframework.org/schema/context"
          xmlns:mongo="http://www.springframework.org/schema/data/mongo"
          xsi:schemaLocation=
          "http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/data/mongo
          http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <mongo:mongo id="replicaSetMongo" replica-set="127.0.0.1:27017,localhost:27018"/>

</beans>

我知道上面的配置略有不同,但我目前正在尝试的是获得一个异常,它向我显示没有副本集节点是可访问的。

任何想法,提示?


答案 1

没有明确的支持,不。但是您应该能够通过参数对其进行配置。uri

我们最近实际上更新了文档


答案 2

我遇到了类似的问题,我深入研究了代码,发现如果为 、、 或 配置了任何值,则代码会忽略 uri 值。MongoProperties::createMongoClient()spring.data.mongodb.hostspring.data.mongodb.portspring.data.mongodb.usernamespring.data.mongodb.password

如果我将所有这些信息放在URI中(并从属性文件中删除所有其他值),则连接代码有效。spring.data.mongodb.*

URI 属性设置最终如下所示:

mongodb://username:mypasswd@hostname1:27017,hostname2:27017,hostname3:27017/dbname

有关设置 URI 值格式的文档,请参阅此处