2016-03-15 3 views
0

Я использую процессы потока Java, и у меня есть некоторые проблемы с записью/обновлением с использованием MongoDB 3.0 (не оштукатурен) и Morphia. Вот как это работает:MongoDb Morphia Записывать Концерн

1) Нитка обновления некоторых данные в документе, имеющие определенный «_id» (через морфий ODM)

2) После выполнения document.save(), Пронизывайте посыл «_id» к нитевую

3) тема B получить «_id», запрос MongoDB, чтобы получить письменный документ

Иногда нить B получить «_id», запрос MongoDB, но не получает обновленную версию документа (еще старые значения).

Я думаю, что проблема с проблемой записи. Я настроил MongoDB клиент и морфий хранилищу, как это:

MongoClient mongoClient = new MongoClient(new ServerAddress (host,port), 
               credential); 
    Datastore datastore = morphia.createDatastore(mongoClient, datastoreName); 

    // Setting up writeconcern 
    WriteConcern wc=new WriteConcern(1,0,false,true); 
    datastore.setDefaultWriteConcern(wc); 
    mongoClient.setWriteConcern(wc); 

Есть ли что-то я не хватает? Как действительно дождаться, когда документ будет обновлен в MongoDB Morphia перед отправкой сообщения в Thread B?

ответ

0
  1. Я думаю, что вы хотите озабоченность большинство записи: http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html#MAJORITY
  2. Вы настроили право читать предпочтение? primary или primaryPreferred является то, что вы хотите, видеть http://api.mongodb.org/java/current/com/mongodb/ReadPreference.html#primary--

PS: Я думаю, что ваше творение WriteConcern осуждается: http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html#WriteConcern-java.lang.String-int-boolean-boolean-

+0

я думаю, что ваш ответ на sharded сервера MongoDB. Mine is not ... – Cedric

+0

Нет, эти настройки предназначены для наборов реплик – xeraa

+0

ОК спасибо. У меня только 1 экземпляр mongodb на 1 сервере. Я заменил устаревший WriteConcern wc = new WriteConcern (1,0, false, true); с WriteConcern.JOURNALED (но это точно так же в соответствии с определением класса WriteConcern) – Cedric