2013-05-16 4 views
1

Quelqu'un a-t-il un paramètre de succès readPreference pour MongoDB en utilisant Grails? J'ai essayé de mettre un paramètre readPreference dans la fermeture des options habituelles dans datasource.groovy mais pas de joie.Comment définir readPreference pour MongoDB dans Grails

grails { 
    mongo { 
     replicaSet = [<host1>, <host2>] 
     databaseName = "plover_development" 
     options { 
      readPreference = ReadPreference.secondaryPreferred() 
      connectionsPerHost = 100 
      threadsAllowedToBlockForConnectionMultiplier = 10 
     } 
    } 
} 

mais je rencontre une erreur lors du printemps essaie de mettre readPreference et rejette l'ensemble comme essayer d'écrire sur une propriété de haricots non inscriptible. Il doit y avoir un moyen de définir globalement readPreference mais je ne l'ai pas encore trouvé.

+0

J'utilise le [MongoDB GORM] (http://grails.org/plugin/mongodb) de Spring plugin, btw. –

+0

Quelle version du plugin Mongo et des Grails utilisiez-vous? –

Répondre

0

Dans le documentation, je vois l'exemple suivant:

mongodb { 
replicaSet = [ "localhost:27017", "localhost:27018"] 
databaseName = 'test' 
options = new MongoOptions(readPreference: ReadPreference.nearest()) 
} 

Essayez d'attribuer vos paramètres d'options à l'intérieur du MongoOptions objet au lieu d'utiliser la fermeture.

+1

J'ai essayé cela mais il me donne une erreur "Erreur d'initialisation de l'application: Aucune propriété de ce type: clé pour la classe: com.mongodb.MongoOptions". Puisque ce document est basé sur Morphia (j'utilise le MongoDB GORM de Spring) peut-être c'est pourquoi je ne peux pas définir readPreference de cette façon. –

0

Eh bien, j'ai pu définir readPreference au niveau de la collection Grails, ce qui est la meilleure façon de le faire quand même.

Dans la fermeture pour le mappage (par exemple) en appelant le ReadPreference.secondaryPreferred() statique et en poussant le résultat dans une variable readPreference.

static mapping = { 
    serviceTier reference: false 
    linkedAccounts reference: false 
    missions reference: false 
    users reference: false 
    name index:true, indexAttributes:[unique:true, dropDups:true] 
    writeConcern WriteConcern.SAFE 
    readPreference ReadPreference.secondaryPreferred() 
} 
+0

Avez-vous déjà trouvé une solution pour le paramétrer globalement? –

+0

Je ne pense pas que le pilote Grails MongoDB supporte directement readPreference. J'ai recherché des références à readPreference à travers l'ensemble du repo de grails-data-mapping et n'ai rien trouvé. Cependant, il est possible de faire quelque chose via l'API de bas niveau. – Keeth

0

Grails {{ mongo ..... options { .... slaveOk = true} }}

dépréciée, mais vous pouvez l'utiliser

Questions connexes