2015-08-05 20 views
7

Attualmente sto scrivendo un'applicazione che dovrebbe utilizzare un set di repliche di MongoDB. Si tratta di un'applicazione basata primavera di avvio e le seguenti proprietà funziona perfettamente bene per la connessione a un server:Come configurare spring-data-mongodb per utilizzare un set di repliche tramite le proprietà

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

Questo è assolutamente bene per il mio ambiente dev locale. Ma in seguito dovrebbe funzionare contro un set di repliche MongoDB, quindi devo fornire almeno 2, meglio 3 semi di serie di repliche, ma come posso farlo con le proprietà?

Ho dato un'occhiata a questa pagina: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html, ma non esiste una proprietà esplicita per i set di repliche menzionati. Fornire un elenco separato di indirizzi come questo: (. Ho provato uno dopo l'altro)

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 

Questo è anche non funziona (infatti, produce un'eccezione che permette Spring utilizza la configurazione di default).

Ho anche cercato di utilizzare la seguente config.xml, senza fortuna:

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

So che le configurazioni di cui sopra sono leggermente diversi, ma quello che sto attualmente cercando di ottenere è un'eccezione che sta mostrando io che nessun nodo del set di repliche era raggiungibile.

Qualche idea, suggerimenti?

risposta

8

Non esiste un supporto esplicito per questo, no. Ma dovresti essere in grado di configurarlo perfettamente tramite il parametro uri.

In realtà abbiamo aggiornato the documentation di recente.

+0

Grazie per la tua risposta Stephane. Quale versione è di Spring Data Mongo supporta questo tipo di proprietà di configurazione? – incredibleholg

+0

Ok, ho finalmente avuto un po 'di tempo per controllare questo. Sembra funzionare. Ma i messaggi di log non sono molto chiari sui cluster (spero di trovare un po 'di tempo per indagare e registrare un problema) Comunque, grazie per il tuo aiuto rapido! – incredibleholg

6

Avevo un problema simile e ho individuato il codice MongoProperties :: createMongoClient() e ho rilevato che il codice ignorava il valore uri se c'erano valori configurati per spring.data.mongodb.host, spring.data. mongodb.port, spring.data.mongodb.username o spring.data.mongodb.password. Se inserisco tutte le informazioni in uri (e rimosso tutti gli altri valori spring.data.mongodb. * Dal file delle proprietà), il codice di connessione ha funzionato. L'impostazione della proprietà uri ha finito per assomigliare a questo: mongodb: // nomeutente: mypasswd @ hostname1: 27017, hostname2: 27017, hostname3: 27017/dbname

la documentazione per la formattazione del valore uri sono qui: https://docs.mongodb.org/manual/reference/connection-string

+0

Grazie per il commento, ho completamente dimenticato di aggiungere questo. In effetti, se uno qualsiasi dei valori menzionati è impostato, l'URI viene ignorato. – incredibleholg

Problemi correlati