我想知道如何更改我的 java 代码以支持使用 spring-data 和 MongoDB 的 replset。
我有 3 台 MongoDB 服务器正在运行.. 示例:
./mongod --dbpath=/home/jsmith/tmp/db1 --replSet=spring --port=27017
./mongod --dbpath=/home/jsmith/tmp/db2 --replSet=spring --port=27027
./mongod --dbpath=/home/jsmith/tmp/db3 --replSet=spring --port=27037
如果我执行 rs.status() 我可以看到如果 27017 上的 db 出现故障,那么其他数据库之一将成为主要数据库,因此我知道 mongoDB 工作正常,但在我的 java 代码中,如果我尝试运行它,我会收到以下错误:
Exception in thread "main" org.springframework.dao.DataAccessResourceFailureException: can't call something : /127.0.0.1:27017/demo
它只在端口 27017 上查看
这是我的mongodbconfig:
@Configuration
@EnableMongoRepositories
@ComponentScan(basePackageClasses = {MongoDBApp.class})
@PropertySource("classpath:application.properties")
public class MongoConfiguration extends AbstractMongoConfiguration {
@Override
protected String getDatabaseName() {
return "demo";
}
@Override
public Mongo mongo() throws Exception {
return new Mongo(new ArrayList<ServerAddress>() {{ add(new ServerAddress("127.0.0.1", 27017)); add(new ServerAddress("127.0.0.1", 27027)); add(new ServerAddress("127.0.0.1", 27037)); }});
}
@Override
protected String getMappingBasePackage() {
return "com.xxxx.mongodb.example.domain";
}
}
如何更改它以支持 replset?但如果它的读数和其中一台服务器出现故障,我会收到一个错误..无论如何要重新连接?