`name` varchar(255) NOT NULL,\r
`host` varchar(255) DEFAULT NULL,\r
`port` int(11) DEFAULT NULL,\r
+ `database` varchar(255) DEFAULT NULL,\r
+ `encrypt` bit(1) DEFAULT NULL,\r
`login` varchar(255) DEFAULT NULL,\r
`pass` varchar(255) DEFAULT NULL,\r
`property1` varchar(255) DEFAULT NULL,\r
) ENGINE=InnoDB DEFAULT CHARSET=utf8;\r
\r
\r
-insert into db (name,host,login,pass,property1) values ('Couchbase','dl_couchbase','dl','dl1234','dl');\r
+insert into db (name,host,login,pass,database) values ('Couchbase','dl_couchbase','dl','dl1234','datalake');\r
insert into db (name,host) values ('Elasticsearch','dl_es');\r
-insert into db (name,host,port,property1) values ('MongoDB','dl_mongodb',27017,'datalake');\r
+insert into db (name,host,port,database) values ('MongoDB','dl_mongodb',27017,'datalake');\r
insert into db (name,host) values ('Druid','dl_druid');\r
\r
\r
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
+import org.apache.commons.lang3.StringUtils;
import org.bson.Document;
import org.json.JSONObject;
import org.springframework.stereotype.Service;
import com.mongodb.MongoClient;
+import com.mongodb.MongoClientOptions;
+import com.mongodb.MongoClientOptions.Builder;
+import com.mongodb.MongoCredential;
+import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
private void init() {
Db mongodb = dbService.getMongoDB();
- mongoClient = new MongoClient(mongodb.getHost(), mongodb.getPort());
- database = mongoClient.getDatabase(mongodb.getProperty1());
+ String host = mongodb.getHost();
+
+ Integer port = mongodb.getPort();
+ if (port == null || port == 0) {
+ port = 27017; //MongoDB default
+ }
+
+ String databaseName = mongodb.getDatabase();
+ String userName = mongodb.getLogin();
+ String password = mongodb.getPass();
+
+ MongoCredential credential = null;
+ if (StringUtils.isNoneBlank(userName) && StringUtils.isNoneBlank(password)) {
+ credential = MongoCredential.createCredential(userName, databaseName, password.toCharArray());
+ }
+
+ Builder builder = MongoClientOptions.builder();
+ builder.serverSelectionTimeout(30000);//server selection timeout, in milliseconds
+
+ //http://mongodb.github.io/mongo-java-driver/3.0/driver/reference/connecting/ssl/
+ builder.sslEnabled(Boolean.TRUE.equals(mongodb.getEncrypt()));// getEncrypt() can be null
+ MongoClientOptions options = builder.build();
+
+ mongoClient = new MongoClient(new ServerAddress(host, port), credential, options);
+ database = mongoClient.getDatabase(mongodb.getDatabase());
}
@PreDestroy
documents.add(doc);
}
- String collectionName = topic.getName().replaceAll("[^a-zA-Z0-9]","");//remove - _ .
+ String collectionName = topic.getName().replaceAll("[^a-zA-Z0-9]", "");//remove - _ .
MongoCollection<Document> collection = mongoCollectionMap.computeIfAbsent(collectionName, k -> database.getCollection(k));
collection.insertMany(documents);