gpt4 book ai didi

java - 如何更改我的 Java 代码以使用 replset?使用 Spring Data 和 MongoDB

转载 作者:行者123 更新时间:2023-11-29 05:41:36 26 4
gpt4 key购买 nike

我想知道如何更改我的 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 上的数据库出现故障,那么其他数据库之一将成为主要数据库,因此我知道 mongoDB 工作正常,但在我的 Java 代码中,如果我尝试运行它,我会得到以下错误:

Exception in thread "main" org.springframework.dao.DataAccessResourceFailureException: can't call something : /127.0.0.1:27017/demo

它只在端口 27017 上查找

这是我的 mongodb 配置:

@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?但是如果它的读数和其中一台服务器出现故障,我会收到一个错误.. 无论如何要重新连接?

最佳答案

URI 方法应该有效,或者有更清晰的方法使用服务器列表初始化副本集:

final List<ServerAddress> seeds = Arrays.asList(new ServerAddress("127.0.0.1", 27017),
new ServerAddress("127.0.0.1", 27027),
new ServerAddress("127.0.0.1", 27037));
final Mongo mongo = new Mongo(seeds);

关于java - 如何更改我的 Java 代码以使用 replset?使用 Spring Data 和 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17365040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com