spring-data と MongoDB で replset をサポートするように Java コードを変更する方法を知りたいです。
私は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 のデータベースがダウンした場合、他のデータベースの 1 つがプライマリになることがわかります。これにより、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 をサポートするように変更するにはどうすればよいですか? しかし、その読み取りとサーバーの1つがダウンすると、エラーが発生します..とにかく再接続しますか?