javamongodbspring-bootspring-data-mongodb

How to configure spring-data-mongodb to use a replica set via properties


I am currently writing an application which should use a replica set of MongoDB. It is a Spring Boot based application and the following properties work perfectly fine to connect to one server:

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

This is absolutely fine for my local dev environment. But later on it should run against a MongoDB replica set, so I have to provide at least 2, better 3 replica set seeds, but how can I do this with properties?

I had a look on this page: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html, but there is no explicit property for replica sets mentioned. Providing a comma separated list of addresses like this:

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

(I tried one after another.)

This is also not working (in fact, it produces an exception which lets Spring uses the default configuration).

I also tried to use the following config.xml, with no luck:

<?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>

I know that the above configs are slightly different, but what I am currently trying is to get an exception which is showing me that no replica set node was reachable.

Any ideas, hints?


Solution

  • There is no explicit support for that, no. But you should be able to configure that just fine via the uri parameter.

    We've actually updated the documentation recently.