Mongo配置:
mongodb:
mongo1:
replica: 集群ip:端口
userName:
password:
dbName:
maxWaitTime: 10000
authDB:
mongo2:
replica: 集群ip:端口
userName:
password:
dbName:
maxWaitTime: 10000
authDB:
MongoProperties :
public static class MongoProperties {
private String replica;
private String userName;
private String password;
private String dbName;
private Integer maxWaitTime;
private String authDB;
}
集群分割:
private static List<ServerAddress> getServerAddress(String replica) {
String[] replicas = replica.split(",");
List<ServerAddress> serverAddresses = new ArrayList<>();
for (String s : replicas) {
String host = s.substring(0, s.lastIndexOf(":"));
String port = s.substring(s.lastIndexOf(":") + 1);
serverAddresses.add(new ServerAddress(host, Integer.parseInt(port)));
}
return serverAddresses;
}
配置流程:
MongoTemplate-MongoDatabaseFactory(MongoClient)-MongoClientSettings
MongoClient mongoClient = MongoClients.create(MongoClientSettings);
return new SimpleMongoClientDatabaseFactory(mongoClient, mongoProperties.getDbName());
MongoClientSettings
ConnectionPoolSettings poolSetting = ConnectionPoolSettings.builder()
.maxWaitTime(mongoProperties.getMaxWaitTime(), TimeUnit.MILLISECONDS)
.build();
存在连接认证的话
MongoCredential credential = MongoCredential.createScramSha1Credential(mongoProperties.getUserName(),
mongoProperties.getAuthDB(), mongoProperties.getPassword().toCharArray());
MongoClientSettings.builder()
.credential(credential)
.applyToConnectionPoolSettings(builder -> builder.applySettings(poolSetting))
.applyToClusterSettings(builder -> builder.hosts(serverAddresses)).build();