我正在通过Spring中的MongoDB驱动程序连接到一个mongodb切分服务器。我正在使用以下版本:
我的Mongo选项设置在contextConfigLocation文件mvc-dispatcher-servlet.xml中。
<mongo:mongo host="mongo.sample.com" port="30000">
<mongo:options auto-connect-retry="true"
slave-ok="true"/>
</mongo:mongo>它运行得很好,但是从-ok被come.MongoDB.ReadPreference所反对。我只是想知道是否有任何方法可以在readPreference文件中设置Spring的contextConfiLocation。
发布于 2014-02-24 20:18:25
通过将MongoTemplate设置为SECONDARY,扩展@Trisha的响应:“以编程方式在SECONDARY中执行它”。
MongoTemplate template = new MongoTemplate(...);
template.setReadPreference(com.mongodb.ReadPreference.SECONDARY);发布于 2014-07-07 15:35:54
声明以下bean
<bean id="readPreferenceSecondary" class="com.mongodb.TaggableReadPreference.SecondaryReadPreference">
</bean>和
你把这个注入你的蒙戈模板
<bean id="mongoTemplateProdDb" class="org.springframework.data.mongodb.core.MongoTemplate" >
<property name="readPreference" ref="readPreferenceSecondary"></property>
</bean>发布于 2018-07-04 05:05:30
如果您使用的是spring-data-mongodb,并且需要使用基于find查询的多个读取首选项,则可以创建多个Mongo模板和/或存储库,如
@EnableMongoRepositories(basePackages = {
"com.you.repo.package" }, mongoTemplateRef = "mongoTemplateOne")
@Configuration
public class MongoConfig {
@Bean(name="mongoTemplateOne")
public MongoTemplate getMongoTemplateOne() throws UnknownHostException {
MongoTemplate templateOne = new MongoTemplate(new SimpleMongoDbFactory(new MongoClientURI("YOUR_MONGO_URL")));
templateOne.setReadPreference(ReadPreference.secondaryPreferred());
//setting WriteConcern but not relevant for this thread
templateOne.setWriteConcernResolver(yourWriteConcernResolver());
return templateOne;
}
@Bean(name = "mongoTemplateTwo")
public MongoTemplate getMongoTemplateTwo() throws UnknownHostException {
MongoTemplate templateTwo = new MongoTemplate(new SimpleMongoDbFactory(new MongoClientURI("YOUR_MONGO_URL")));
templateTwo.setReadPreference(ReadPreference.secondaryPreferred());
return templateTwo;
}
private WriteConcernResolver yourWriteConcernResolver() {
return action -> {
if (action.getCollectionName()
.equals("your_collecton")
&& (action.getMongoActionOperation() == MongoActionOperation.SAVE
|| action.getMongoActionOperation() == MongoActionOperation.UPDATE)) {
return WriteConcern.MAJORITY;
}
return action.getDefaultWriteConcern();
};
}https://stackoverflow.com/questions/19555987
复制相似问题