2015-08-05 9 views
7

Ich schreibe gerade eine Anwendung, die einen Replikatsatz von MongoDB verwenden soll. Es ist eine Frühlings-Boot-basierte Anwendung und die folgenden Eigenschaften arbeiten völlig in Ordnung, mit einem Server verbinden:So konfigurieren Sie Spring-Data-Mongodb für die Verwendung eines Replikatsatzes über Eigenschaften

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

Das ist absolut in Ordnung für meine lokale Dev-Umgebung. Aber später sollte es gegen einen MongoDB-Replikatsatz laufen, also muss ich mindestens 2, besser 3 Replikat-Set-Seeds bereitstellen, aber wie kann ich das mit Eigenschaften machen?

Ich habe auf dieser Seite gesucht: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html, aber es gibt keine explizite Eigenschaft für Replikatsätze erwähnt. eine durch Kommata getrennte Liste von Adressen wie diese Bereitstellung: (. Ich habe versucht, eine nach der anderen)

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 

Dies funktioniert auch nicht (in der Tat, erzeugt es eine Ausnahme, die Frühling lässt verwendet die Standardkonfiguration).

Ich habe versucht, auch die folgenden config.xml zu verwenden, ohne Glück:

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

Ich weiß, dass die oben configs etwas anders sind, aber was ich derzeit versuche, eine Ausnahme zu erhalten, die zeigt, mir, dass kein Replikat-Knoten erreichbar war.

Irgendwelche Ideen, Hinweise?

Antwort

8

Es gibt keine explizite Unterstützung dafür, nein. Aber Sie sollten in der Lage sein, das über den Parameter uri zu konfigurieren.

Wir haben kürzlich the documentation aktualisiert.

+0

Danke für deine Antwort Stephane. Welche Version von Spring Data Mongo unterstützt diese Art von Konfigurationseigenschaft? – incredibleholg

+0

Ok, ich habe endlich Zeit, das zu überprüfen. Es scheint zu funktionieren. Aber die Protokollnachrichten sind nicht sehr klar über Cluster (hoffentlich werde ich etwas Zeit finden, ein Problem zu untersuchen und zu protokollieren). Wie auch immer, danke für deine schnelle Hilfe! – incredibleholg

6

Ich hatte ein ähnliches Problem und ich grub in den MongoProperties :: createMongoClient() - Code und fand, dass der Code den Wert uri ignorierte, wenn Werte für spring.data.mongodb.host, spring.data konfiguriert waren. mongodb.port, spring.data.mongodb.username oder spring.data.mongodb.password. Wenn ich all diese Informationen in die uri lege (und alle anderen spring.data.mongodb. * -Werte aus der Eigenschaftendatei entfernt habe), funktioniert der Verbindungscode. Die Eigenschaft uri Einstellung am Ende aussehen wie folgt aus: mongodb: // username: mypasswd @ hostname1: 27017, hostname2: 27017, hostname3: 27017/dbname

Die Dokumentation für die Formatierung Ihres uri Wert sind hier: https://docs.mongodb.org/manual/reference/connection-string

+0

Danke für das Kommentieren, ich habe völlig vergessen, dies hinzuzufügen. Wenn einer der genannten Werte festgelegt ist, wird der URI ignoriert. – incredibleholg

Verwandte Themen