MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB+Azure+Android:errore:com.mongodb.MongoException:non si parla con il master e riprova esauriti

Il motivo degli errori intermittenti è dovuto alle preferenze di lettura predefinite per il driver, principalmente per quanto riguarda i set di repliche. La preferenza di lettura predefinita è primaria. Per ciascuna delle modalità menzionate di seguito, PRIMARY si riferisce al database master (sempre il più aggiornato) e SECONDARY si riferisce agli slave, che sono fondamentalmente le copie del master e non sono sempre aggiornati.

PRIMARY: The default read mode. Read from primary only. Throw an error if
         primary is unavailable. Cannot be combined with tags.

La soluzione per modificare la preferenza di lettura in una delle seguenti:

PRIMARY PREFERRED: Read from primary if available, otherwise a secondary.
SECONDARY PREFERRED: Read from a secondary if available, otherwise read from the primary.
NEAREST: Read from any member node from the set of nodes which respond the fastest.

Codice di esempio:

// Use this when doing a read if you don't care if the data is always consistent.
// Change the following with secondaryPreferred() if you have high writes, so
// that you don't interfere with them.
ReadPreference preference = ReadPreference.primaryPreferred();
DBCursor cur = new DBCursor(collection, query, null, preference);

Per ulteriori informazioni, vedere il fonte .