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

标签 java spring mongodb spring-data

我想知道如何更改我的 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/

相关文章:

javascript - 通过nodejs Express应用程序保持mongodb(2.0)连接

java - 在 Java 中以语言环境敏感的方式验证十进制数

java - 注意 : android. support.v4.app.NotificationCompat Jellybean 调用 'Field.getType'

java - 如何以编程方式求解多元方程组?

spring - Maven多模块项目中的集成测试

sockets - MongoDB - 套接字 :/tmp/mongodb-27017. socks 的权限被拒绝

java - 如何解决 Spring Boot 中的 ConstraintViolationException

Spring Scheduled Task 在集群环境中运行

java - REST API 响应时间在负载下增加 [Tomcat]

javascript - MongoDB/ExpressJS -- 当 ObjectID 包含在变量中时,通过 _id 删除文档