summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhanghongqing <[email protected]>2023-06-26 10:14:29 +0800
committerzhanghongqing <[email protected]>2023-06-26 10:14:29 +0800
commit894e1665f4e6e5b1f08027de193c2894f79d0558 (patch)
tree46254fb1d88327311a7cf52be8829cff24215c2e
parent2ed2effb4a4ad61c861e2b280fc6761ba1a1832a (diff)
优化数据库连接,使用连接池。解决任务忙碌状态提示状态码非423问题
-rw-r--r--galaxy-job-executor/pom.xml6
-rw-r--r--galaxy-job-executor/src/main/java/com/mesalab/executor/core/utils/DBUtils.java52
-rw-r--r--galaxy-job-executor/src/main/java/com/mesalab/executor/jobhandler/knowledgeBase/KnowledgeBaseJob.java6
-rw-r--r--galaxy-job-executor/src/main/java/com/mesalab/executor/service/knowledgeBase/KnowledgeBaseService.java2
-rw-r--r--pom.xml6
5 files changed, 42 insertions, 30 deletions
diff --git a/galaxy-job-executor/pom.xml b/galaxy-job-executor/pom.xml
index a1e574b..4a12b59 100644
--- a/galaxy-job-executor/pom.xml
+++ b/galaxy-job-executor/pom.xml
@@ -28,8 +28,8 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.xuxueli</groupId>
- <artifactId>xxl-job-core</artifactId>
+ <groupId>com.mesalab</groupId>
+ <artifactId>galaxy-job-core</artifactId>
<version>${xxl-job-core.version}</version>
</dependency>
<dependency>
@@ -196,7 +196,7 @@
<JAR_FILE>${project.build.finalName}.xjar</JAR_FILE>
</buildArgs>
<imageTags>
- <imageTag>v1.3.230609-cn</imageTag>
+ <imageTag>v1.3.230610</imageTag>
</imageTags>
<resources>
<resource>
diff --git a/galaxy-job-executor/src/main/java/com/mesalab/executor/core/utils/DBUtils.java b/galaxy-job-executor/src/main/java/com/mesalab/executor/core/utils/DBUtils.java
index 2f261bf..9b9271b 100644
--- a/galaxy-job-executor/src/main/java/com/mesalab/executor/core/utils/DBUtils.java
+++ b/galaxy-job-executor/src/main/java/com/mesalab/executor/core/utils/DBUtils.java
@@ -1,5 +1,6 @@
package com.mesalab.executor.core.utils;
+import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.log.Log;
import com.mesalab.executor.pojo.JDBCParam;
@@ -15,27 +16,12 @@ import java.util.Map;
public class DBUtils {
private static Log logger = Log.get();
-// private static HikariDataSource hikariDataSource;
+ private static HikariDataSource hikariDataSource;
+ private static String dbParams = "?useUnicode=true&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&tinyInt1isBit=false&transformedBitIsBoolean=false";
public static Connection getDBConn(JDBCParam jdbcParam) throws SQLException {
- String url = "jdbc:mysql://" + jdbcParam.getIp() + ":3306/" + jdbcParam.getDatabase() + "?useUnicode=true&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&tinyInt1isBit=false&transformedBitIsBoolean=false";
-// HikariConfig config = new HikariConfig();
-// config.setJdbcUrl(url);
-// config.setUsername(jdbcParam.getUsername());
-// config.setPassword(jdbcParam.getPin());
-//
-// config.setConnectionTestQuery("SELECT 1");
-// config.setMinimumIdle(1);
-// config.setMaximumPoolSize(10);
-// config.setConnectionTimeout(10000);
-// config.setIdleTimeout(60000);
-// config.setMaxLifetime(300000);
-//
-// hikariDataSource = new HikariDataSource(config);
-
-// Connection connection = hikariDataSource.getConnection();
+ String url = "jdbc:mysql://" + jdbcParam.getIp() + ":3306/" + jdbcParam.getDatabase() + dbParams;
Connection connection = null;
-
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection(url, jdbcParam.getUsername(), jdbcParam.getPin());
@@ -47,6 +33,36 @@ public class DBUtils {
return connection;
}
+
+ public synchronized static Connection getConnPool(JDBCParam jdbcParam) throws SQLException {
+ String url = "jdbc:mysql://" + jdbcParam.getIp() + ":3306/" + jdbcParam.getDatabase() + dbParams;
+ if (hikariDataSource == null || isDataSourceChanged(url, jdbcParam.getUsername(), jdbcParam.getPin())) {
+ // 关闭旧的数据源
+ if (hikariDataSource != null) {
+ hikariDataSource.close();
+ IoUtil.close(hikariDataSource);
+ }
+ // 创建新的数据源
+ HikariConfig config = new HikariConfig();
+ config.setJdbcUrl(url);
+ config.setUsername(jdbcParam.getUsername());
+ config.setPassword(jdbcParam.getPin());
+ config.setMaximumPoolSize(10);
+ config.setConnectionTimeout(10000);
+ config.setIdleTimeout(60000);
+ config.setMaxLifetime(300000);
+ hikariDataSource = new HikariDataSource(config);
+ }
+
+ return hikariDataSource.getConnection();
+ }
+
+ private static boolean isDataSourceChanged(String url, String username, String password) {
+ return !hikariDataSource.getJdbcUrl().equals(url)
+ || !hikariDataSource.getUsername().equals(username)
+ || !hikariDataSource.getPassword().equals(password);
+ }
+
public void close() {
// hikariDataSource.close();
}
diff --git a/galaxy-job-executor/src/main/java/com/mesalab/executor/jobhandler/knowledgeBase/KnowledgeBaseJob.java b/galaxy-job-executor/src/main/java/com/mesalab/executor/jobhandler/knowledgeBase/KnowledgeBaseJob.java
index 687866f..17aa79d 100644
--- a/galaxy-job-executor/src/main/java/com/mesalab/executor/jobhandler/knowledgeBase/KnowledgeBaseJob.java
+++ b/galaxy-job-executor/src/main/java/com/mesalab/executor/jobhandler/knowledgeBase/KnowledgeBaseJob.java
@@ -121,6 +121,7 @@ public class KnowledgeBaseJob {
* @return
*/
private boolean metadataNoChanged(Map km) {
+
String knowledgeBaseMetadata = knowledgeBaseService.getMetadata(String.valueOf(km.get("knowledge_id")));
if (StrUtil.isNotEmpty(knowledgeBaseMetadata)) {
Map historyMetadata = JSONUtil.toBean(knowledgeBaseMetadata, Map.class);
@@ -144,11 +145,6 @@ public class KnowledgeBaseJob {
private List<Map> getSinkParamFormat(Map sink) {
JSONArray sinkParamsArr = JSONUtil.parseArray(sink.get("params"));
List<Map> sinkParams = JSONUtil.toList(sinkParamsArr, Map.class);
-// //获取设置的格式
-// Map<Object, Map> sinkMap = new HashMap<>();
-// for (Map sinkParam : sinkParams) {
-// sinkMap.put(sinkParam.get("name") + "#" + sinkParam.get("type"), sinkParam);
-// }
return sinkParams;
}
diff --git a/galaxy-job-executor/src/main/java/com/mesalab/executor/service/knowledgeBase/KnowledgeBaseService.java b/galaxy-job-executor/src/main/java/com/mesalab/executor/service/knowledgeBase/KnowledgeBaseService.java
index d02e158..08ac51c 100644
--- a/galaxy-job-executor/src/main/java/com/mesalab/executor/service/knowledgeBase/KnowledgeBaseService.java
+++ b/galaxy-job-executor/src/main/java/com/mesalab/executor/service/knowledgeBase/KnowledgeBaseService.java
@@ -84,7 +84,7 @@ public class KnowledgeBaseService {
JobUtil.infoLog("mysql data source starting, param is {}", sourceParams);
JDBCParam jdbcParam = new JDBCParam(sourceParams);
List<Map> collect = new ArrayList<>();
- try (Connection conn = DBUtils.getDBConn(jdbcParam);
+ try (Connection conn = DBUtils.getConnPool(jdbcParam);
PreparedStatement pst = conn.prepareStatement(jdbcParam.getSql());
ResultSet resultSet = pst.executeQuery()) {
diff --git a/pom.xml b/pom.xml
index 78ea4dc..36a0cc3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,14 +11,14 @@
<repository>
<id>nexus</id>
<name>Team Nexus Repository</name>
- <url>http://192.168.40.125:8099/content/groups/public</url>
+ <url>http://192.168.40.153:8099/content/repositories/releases/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Team Nexus Repository</name>
- <url>http://192.168.40.125:8099/content/groups/public/</url>
+ <url>http://192.168.40.153:8099/content/repositories/releases/</url>
</pluginRepository>
</pluginRepositories>
<modules>
@@ -55,7 +55,7 @@
<docker.registry>192.168.40.153</docker.registry>
<docker.registry.port>9080</docker.registry.port>
<docker.image.prefix>galaxy</docker.image.prefix>
- <xxl-job-core.version>2.2.0</xxl-job-core.version>
+ <xxl-job-core.version>1.0.0</xxl-job-core.version>
<galaxy.version>1.1.0</galaxy.version>
<httpclient.version>4.5.6</httpclient.version>
<lombok.version>1.16.20</lombok.version>