mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
升级MongoDB
This commit is contained in:
parent
b8bfce490b
commit
11bf574aae
@ -23,7 +23,7 @@
|
||||
<tomcat-jdbc.version>10.0.14</tomcat-jdbc.version>
|
||||
<druid.version>1.2.8</druid.version>
|
||||
<hikariCP.version>2.4.13</hikariCP.version>
|
||||
<mongo.version>3.12.10</mongo.version>
|
||||
<mongo.version>4.5.0</mongo.version>
|
||||
<sqlite.version>3.36.0.3</sqlite.version>
|
||||
<!-- 此处固定2.5.x,支持到JDK8 -->
|
||||
<hsqldb.version>2.5.2</hsqldb.version>
|
||||
@ -99,18 +99,10 @@
|
||||
<!-- MongoDB Java客户端 -->
|
||||
<dependency>
|
||||
<groupId>org.mongodb</groupId>
|
||||
<artifactId>mongo-java-driver</artifactId>
|
||||
<artifactId>mongodb-driver-sync</artifactId>
|
||||
<version>${mongo.version}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<!--
|
||||
<dependency>
|
||||
<groupId>org.mongodb</groupId>
|
||||
<artifactId>mongodb-driver-sync</artifactId>
|
||||
<version>4.5.0</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
-->
|
||||
<!-- Redis Java客户端 -->
|
||||
<dependency>
|
||||
<groupId>redis.clients</groupId>
|
||||
|
@ -6,24 +6,28 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.db.DbRuntimeException;
|
||||
import cn.hutool.log.Log;
|
||||
import cn.hutool.setting.Setting;
|
||||
import com.mongodb.MongoClient;
|
||||
import com.mongodb.MongoClientOptions;
|
||||
import com.mongodb.MongoClientOptions.Builder;
|
||||
import com.mongodb.MongoClientSettings;
|
||||
import com.mongodb.MongoCredential;
|
||||
import com.mongodb.MongoDriverInformation;
|
||||
import com.mongodb.ServerAddress;
|
||||
import com.mongodb.client.MongoClient;
|
||||
import com.mongodb.client.MongoCollection;
|
||||
import com.mongodb.client.MongoDatabase;
|
||||
import com.mongodb.client.internal.MongoClientImpl;
|
||||
import com.mongodb.connection.ConnectionPoolSettings;
|
||||
import com.mongodb.connection.SocketSettings;
|
||||
import org.bson.Document;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* MongoDB工具类
|
||||
*
|
||||
* @author xiaoleilu
|
||||
*
|
||||
*/
|
||||
public class MongoDS implements Closeable {
|
||||
private final static Log log = Log.get();
|
||||
@ -146,11 +150,11 @@ public class MongoDS implements Closeable {
|
||||
|
||||
final MongoCredential credentail = createCredentail(group);
|
||||
try {
|
||||
if (null == credentail) {
|
||||
mongo = new MongoClient(serverAddress, buildMongoClientOptions(group));
|
||||
} else {
|
||||
mongo = new MongoClient(serverAddress, credentail, buildMongoClientOptions(group));
|
||||
MongoClientSettings.Builder clusterSettingsBuilder = MongoClientSettings.builder().applyToClusterSettings(b -> b.hosts(Collections.singletonList(serverAddress)));
|
||||
if (null != credentail) {
|
||||
clusterSettingsBuilder.credential(credentail);
|
||||
}
|
||||
mongo = new MongoClientImpl(clusterSettingsBuilder.build(), MongoDriverInformation.builder().build());
|
||||
} catch (Exception e) {
|
||||
throw new DbRuntimeException(StrUtil.format("Init MongoDB pool with connection to [{}] error!", serverAddress), e);
|
||||
}
|
||||
@ -192,11 +196,11 @@ public class MongoDS implements Closeable {
|
||||
|
||||
final MongoCredential credentail = createCredentail(StrUtil.EMPTY);
|
||||
try {
|
||||
if (null == credentail) {
|
||||
mongo = new MongoClient(addrList, buildMongoClientOptions(StrUtil.EMPTY));
|
||||
} else {
|
||||
mongo = new MongoClient(addrList, credentail, buildMongoClientOptions(StrUtil.EMPTY));
|
||||
MongoClientSettings.Builder clusterSettingsBuilder = MongoClientSettings.builder().applyToClusterSettings(b -> b.hosts(addrList));
|
||||
if (null != credentail) {
|
||||
clusterSettingsBuilder.credential(credentail);
|
||||
}
|
||||
mongo = new MongoClientImpl(clusterSettingsBuilder.build(), MongoDriverInformation.builder().build());
|
||||
} catch (Exception e) {
|
||||
log.error(e, "Init MongoDB connection error!");
|
||||
return;
|
||||
@ -248,6 +252,7 @@ public class MongoDS implements Closeable {
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------- Private method start
|
||||
|
||||
/**
|
||||
* 创建ServerAddress对象,会读取配置文件中的相关信息
|
||||
*
|
||||
@ -322,8 +327,8 @@ public class MongoDS implements Closeable {
|
||||
* @param group 分组,当分组对应的选项不存在时会读取根选项,如果也不存在使用默认值
|
||||
* @return MongoClientOptions
|
||||
*/
|
||||
private MongoClientOptions buildMongoClientOptions(String group) {
|
||||
return buildMongoClientOptions(MongoClientOptions.builder(), group).build();
|
||||
private MongoClientSettings buildMongoClientOptions(String group) {
|
||||
return buildMongoClientOptions(MongoClientSettings.builder(), group).build();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -332,7 +337,7 @@ public class MongoDS implements Closeable {
|
||||
* @param group 分组,当分组对应的选项不存在时会读取根选项,如果也不存在使用默认值
|
||||
* @return Builder
|
||||
*/
|
||||
private Builder buildMongoClientOptions(Builder builder, String group) {
|
||||
private MongoClientSettings.Builder buildMongoClientOptions(MongoClientSettings.Builder builder, String group) {
|
||||
if (setting == null) {
|
||||
return builder;
|
||||
}
|
||||
@ -348,8 +353,9 @@ public class MongoDS implements Closeable {
|
||||
if (StrUtil.isBlank(group) == false && connectionsPerHost == null) {
|
||||
connectionsPerHost = setting.getInt("connectionsPerHost");
|
||||
}
|
||||
ConnectionPoolSettings.Builder connectionPoolSettingsBuilder = ConnectionPoolSettings.builder();
|
||||
if (connectionsPerHost != null) {
|
||||
builder.connectionsPerHost(connectionsPerHost);
|
||||
connectionPoolSettingsBuilder.maxConnecting(connectionsPerHost);
|
||||
log.debug("MongoDB connectionsPerHost: {}", connectionsPerHost);
|
||||
}
|
||||
|
||||
@ -359,9 +365,10 @@ public class MongoDS implements Closeable {
|
||||
setting.getInt("connectTimeout");
|
||||
}
|
||||
if (connectTimeout != null) {
|
||||
builder.connectTimeout(connectTimeout);
|
||||
connectionPoolSettingsBuilder.maxWaitTime(connectTimeout, TimeUnit.MILLISECONDS);
|
||||
log.debug("MongoDB connectTimeout: {}", connectTimeout);
|
||||
}
|
||||
builder.applyToConnectionPoolSettings(b -> b.applySettings(connectionPoolSettingsBuilder.build()));
|
||||
|
||||
// 套接字超时时间;该值会被传递给Socket.setSoTimeout(int)。默以为0(无穷) --int
|
||||
Integer socketTimeout = setting.getInt(group + "socketTimeout");
|
||||
@ -369,7 +376,8 @@ public class MongoDS implements Closeable {
|
||||
setting.getInt("socketTimeout");
|
||||
}
|
||||
if (socketTimeout != null) {
|
||||
builder.socketTimeout(socketTimeout);
|
||||
SocketSettings socketSettings = SocketSettings.builder().connectTimeout(socketTimeout, TimeUnit.MILLISECONDS).build();
|
||||
builder.applyToSocketSettings(b -> b.applySettings(socketSettings));
|
||||
log.debug("MongoDB socketTimeout: {}", socketTimeout);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user