我在spring中有以下核心mongo选项配置:
<mongo:mongo host="${db.hostname}" >
<mongo:options
connections-per-host="40"
threads-allowed-to-block-for-connection-multiplier="1500"
connect-timeout="15000"
auto-connect-retry="true"
socket-timeout="60000"
write-number="1"
write-fsync="false"/>
</mongo:mongo>
我想知道的是关于不同的写号选项,它与写无关,正常,安全等问题有关。
我可以假设write-number到writeconcern的映射如下所示吗?
NONE: -1
NORMAL: 0
SAFE: 1 (default)
FSYNC_SAFE: 2
REPLICAS_SAFE: 3
JOURNAL_SAFE: 4
MAJORITY: 5
以下链接提供了一个很好的帮助,可以在spring中设置mongo选项,但对于write-number值不够具体: How to configure MongoDB Java driver MongoOptions for production use?
答案 0 :(得分:3)
写入关注数字是“w”的值,其映射到当w> 1时被认为成功之前写入必须传播到的副本的数量。 1。
FSYNC_SAFE映射到设置write-fsync(true或false),因为JOURNAL_SAFE也是一个布尔值,我怀疑在Spring中有一个类似的布尔设置,但我在他们的任何文档中找不到它。
如果您已经安装了所有内容以根据经验进行测试,只需尝试几种配置并检查结果写入问题的实际设置,例如:
WriteConcern wc = new WriteConcern(); // should get your default write concern
System.out.println(wc.getJ());
System.out.println(wc.getFsync());
System.out.println(wc.getW());
那应该显示Journal设置,Fsync设置(两者都是布尔值),W(作为int)。
答案 1 :(得分:1)
你可以设置write-concern =“ACKNOWLEDGED”。
<mongo:mongo id="replicaSetMongo" replica-set="${mongo.replicaSetSevers}" />
<mongo:db-factory dbname="${mongo.dbname}" mongo-ref="replicaSetMongo" write-concern="ACKNOWLEDGED" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>
希望这可以提供帮助。