MongoDb Morphia写关注

时间:2016-03-15 11:25:32

标签: mongodb morphia

我正在使用Java线程进程,而且我使用MongoDB 3.0(非分片)和Morphia进行了一些写/更新问题。以下是它的工作原理:

1)线程A更新具有特定“_id”的文档中的一些数据(通过Morphia ODM)

2)在执行document.save()之后,线程A向线程B发送“_id”

3)线程B收到“_id”,查询MongoDB以检索书面文档

有时,线程B收到“_id”,查询MongoDB但没有获得文档的更新版本(仍然是旧值)。

我认为这是写作问题。我已经设置了MongoDB客户端和Morphia数据存储区:

    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);

有什么我想念的吗?如何在将消息发送到线程B之前,等待Morphia在MongoDB中更新文档?

1 个答案:

答案 0 :(得分:0)

  1. 我认为你会想要多数写作问题:http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html#MAJORITY
  2. 您是否配置了正确的阅读偏好? primaryprimaryPreferred就是您想要的,请参阅http://api.mongodb.org/java/current/com/mongodb/ReadPreference.html#primary--
  3. PS:我认为您的WriteConcern创建已被弃用:http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html#WriteConcern-java.lang.String-int-boolean-boolean-