我目前正在编写一个应该使用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使用默认配置)。
我还尝试使用以下config.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>
我知道上面的配置略有不同,但我目前正在尝试的是获得一个异常,它向我显示没有可访问的副本集节点。
任何想法,提示?
答案 0 :(得分:15)
没有明确支持,不。但是你应该可以通过uri
参数配置它。
我们最近实际更新了the documentation。
答案 1 :(得分:12)
我遇到了类似的问题,我挖掘了MongoProperties::createMongoClient()
代码,发现如果为spring.data.mongodb.host
,spring.data.mongodb.port
,{{spring.data.mongodb.username
配置了任何值,则代码会忽略uri值1}}或spring.data.mongodb.password
。
如果我将所有信息放在URI中(并从属性文件中删除了所有其他spring.data.mongodb.*
值),则连接代码可以正常工作。
URI属性设置最终看起来像这样:
mongodb://username:mypasswd@hostname1:27017,hostname2:27017,hostname3:27017/dbname
格式化URI值的文档为here。
答案 2 :(得分:1)
从此更改application.properties:
spring.data.mongodb.host=server1
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=system
spring.data.mongodb.database=database
...对此:
spring.data.mongodb.uri=mongodb://username:password@server1:port,server2:port/database