2015-08-05 14 views
7

Obecnie piszę aplikację, która powinna używać zestawu replik MongoDB. Jest to aplikacja oparta Wiosna Boot oraz następujące właściwości działa perfekcyjnie połączyć się z jednym serwerem:Jak skonfigurować spring-data-mongodb używać zestawu replik przez właściwości

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

To jest absolutnie w porządku dla mojego środowiska lokalnego dev. Ale później powinien działać z zestawem replik MongoDB, więc muszę dostarczyć co najmniej 2, lepsze 3 zestawy nasion replik, ale jak mam to zrobić z właściwościami?

Spojrzałem na tę stronę: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html, ale nie ma jawnej właściwości dla wymienionych zestawów replik. Zapewnienie oddzielonych przecinkami listę adresów takiego: (. Próbowałem jeden po drugim)

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 

nie pracuje również (w rzeczywistości produkuje wyjątek, który pozwala Wiosna korzysta z domyślnej konfiguracji).

Próbowałem też użyć następującego config.xml, bez powodzenia:

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

wiem, że powyższe configs są nieco inne, ale co ja próbuje obecnie ma uzyskać wyjątek, który pokazano mnie, że żaden węzeł zestawu replik nie był osiągalny.

Wszelkie pomysły, podpowiedzi?

Odpowiedz

8

Nie ma wyraźnego wsparcia dla tego, nie. Ale powinieneś być w stanie skonfigurować to dobrze dzięki parametrowi uri.

Ostatnio zaktualizowaliśmy the documentation.

+0

Dzięki za odpowiedź Stephane. Która wersja jest w Spring Data Mongo obsługuje tego rodzaju właściwość konfiguracji? – incredibleholg

+0

OK, w końcu mam trochę czasu, żeby to sprawdzić. Wydaje się działać. Ale wiadomości w dzienniku nie są bardzo jasne o klastrach (mam nadzieję, że znajdę trochę czasu na zbadanie i zarejestrowanie problemu) W każdym razie, dzięki za szybką pomoc! – incredibleholg

6

Miałem podobny problem i zagłębiłem się w kodzie MongoProperties :: createMongoClient() i odkryłem, że kod zignorował wartość uri, jeśli były jakieś wartości skonfigurowane dla spring.data.mongodb.host, spring.data. mongodb.port, spring.data.mongodb.username lub spring.data.mongodb.password. Jeśli umieściłem wszystkie te informacje w URI (i usunąłem wszystkie inne wartości spring.data.mongodb. * Z pliku właściwości), zadziałał kod połączenia. Ustawienie właściwość uri skończyło się patrząc tak: MongoDB: // nazwa_użytkownika: mojehasło @ hostname1: 27017, 27017, hostname2: hostname3: 27017/dbname

docs dla formatowania wartości uri tutaj: https://docs.mongodb.org/manual/reference/connection-string

+0

Dzięki za komentowanie, zupełnie zapomniałem dodać. Rzeczywiście, jeśli którakolwiek z wymienionych wartości jest ustawiona, identyfikator URI jest ignorowany. – incredibleholg

Powiązane problemy