List of usage examples for com.mongodb.connection ClusterSettings.Builder hosts
List hosts
To view the source code for com.mongodb.connection ClusterSettings.Builder hosts.
Click Source Link
From source file:io.gravitee.am.repository.mongodb.common.MongoFactory.java
License:Apache License
@Override public MongoClient getObject() throws Exception { // Client settings MongoClientSettings.Builder builder = MongoClientSettings.builder(); builder.writeConcern(WriteConcern.ACKNOWLEDGED); // codec configuration for pojo mapping CodecRegistry pojoCodecRegistry = fromRegistries(MongoClients.getDefaultCodecRegistry(), fromProviders(PojoCodecProvider.builder().automatic(true).build())); builder.codecRegistry(pojoCodecRegistry); // Trying to get the MongoClientURI if uri property is defined String uri = readPropertyValue(propertyPrefix + "uri"); if (uri != null && !uri.isEmpty()) { // The builder can be configured with default options, which may be overridden by options specified in // the URI string. MongoClientSettings settings = builder.codecRegistry(pojoCodecRegistry) .applyConnectionString(new ConnectionString(uri)).build(); return MongoClients.create(settings); } else {/* ww w . ja v a 2 s. c o m*/ // Advanced configuration SocketSettings.Builder socketBuilder = SocketSettings.builder(); ClusterSettings.Builder clusterBuilder = ClusterSettings.builder(); ConnectionPoolSettings.Builder connectionPoolBuilder = ConnectionPoolSettings.builder(); ServerSettings.Builder serverBuilder = ServerSettings.builder(); SslSettings.Builder sslBuilder = SslSettings.builder(); Integer connectTimeout = readPropertyValue(propertyPrefix + "connectTimeout", Integer.class, 1000); Integer maxWaitTime = readPropertyValue(propertyPrefix + "maxWaitTime", Integer.class); Integer socketTimeout = readPropertyValue(propertyPrefix + "socketTimeout", Integer.class, 1000); Boolean socketKeepAlive = readPropertyValue(propertyPrefix + "socketKeepAlive", Boolean.class, true); Integer maxConnectionLifeTime = readPropertyValue(propertyPrefix + "maxConnectionLifeTime", Integer.class); Integer maxConnectionIdleTime = readPropertyValue(propertyPrefix + "maxConnectionIdleTime", Integer.class); // We do not want to wait for a server Integer serverSelectionTimeout = readPropertyValue(propertyPrefix + "serverSelectionTimeout", Integer.class, 1000); Integer minHeartbeatFrequency = readPropertyValue(propertyPrefix + "minHeartbeatFrequency", Integer.class); String description = readPropertyValue(propertyPrefix + "description", String.class, "gravitee.io"); Integer heartbeatFrequency = readPropertyValue(propertyPrefix + "heartbeatFrequency", Integer.class); Boolean sslEnabled = readPropertyValue(propertyPrefix + "sslEnabled", Boolean.class); if (maxWaitTime != null) connectionPoolBuilder.maxWaitTime(maxWaitTime, TimeUnit.MILLISECONDS); if (connectTimeout != null) socketBuilder.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS); if (socketTimeout != null) socketBuilder.readTimeout(socketTimeout, TimeUnit.MILLISECONDS); if (socketKeepAlive != null) socketBuilder.keepAlive(socketKeepAlive); if (maxConnectionLifeTime != null) connectionPoolBuilder.maxConnectionLifeTime(maxConnectionLifeTime, TimeUnit.MILLISECONDS); if (maxConnectionIdleTime != null) connectionPoolBuilder.maxConnectionIdleTime(maxConnectionIdleTime, TimeUnit.MILLISECONDS); if (minHeartbeatFrequency != null) serverBuilder.minHeartbeatFrequency(minHeartbeatFrequency, TimeUnit.MILLISECONDS); if (description != null) clusterBuilder.description(description); if (heartbeatFrequency != null) serverBuilder.heartbeatFrequency(heartbeatFrequency, TimeUnit.MILLISECONDS); if (sslEnabled != null) sslBuilder.enabled(sslEnabled); if (serverSelectionTimeout != null) clusterBuilder.serverSelectionTimeout(serverSelectionTimeout, TimeUnit.MILLISECONDS); // credentials option String username = readPropertyValue(propertyPrefix + "username"); String password = readPropertyValue(propertyPrefix + "password"); MongoCredential credentials = null; if (username != null || password != null) { String authSource = readPropertyValue(propertyPrefix + "authSource", String.class, "gravitee-am"); credentials = MongoCredential.createCredential(username, authSource, password.toCharArray()); builder.credential(credentials); } // clustering option List<ServerAddress> seeds; int serversCount = getServersCount(); if (serversCount == 0) { String host = readPropertyValue(propertyPrefix + "host", String.class, "localhost"); int port = readPropertyValue(propertyPrefix + "port", int.class, 27017); seeds = Collections.singletonList(new ServerAddress(host, port)); } else { seeds = new ArrayList<>(serversCount); for (int i = 0; i < serversCount; i++) { seeds.add(buildServerAddress(i)); } } clusterBuilder.hosts(seeds); SocketSettings socketSettings = socketBuilder.build(); ClusterSettings clusterSettings = clusterBuilder.build(); ConnectionPoolSettings connectionPoolSettings = connectionPoolBuilder.build(); ServerSettings serverSettings = serverBuilder.build(); SslSettings sslSettings = sslBuilder.build(); MongoClientSettings settings = builder .applyToClusterSettings(builder1 -> builder1.applySettings(clusterSettings)) .applyToSocketSettings(builder1 -> builder1.applySettings(socketSettings)) .applyToConnectionPoolSettings(builder1 -> builder1.applySettings(connectionPoolSettings)) .applyToServerSettings(builder1 -> builder1.applySettings(serverSettings)) .applyToSslSettings(builder1 -> builder1.applySettings(sslSettings)).build(); return MongoClients.create(settings); } }