diff options
| author | zhanghongqing <[email protected]> | 2023-06-26 10:14:29 +0800 |
|---|---|---|
| committer | zhanghongqing <[email protected]> | 2023-06-26 10:14:29 +0800 |
| commit | 894e1665f4e6e5b1f08027de193c2894f79d0558 (patch) | |
| tree | 46254fb1d88327311a7cf52be8829cff24215c2e | |
| parent | 2ed2effb4a4ad61c861e2b280fc6761ba1a1832a (diff) | |
优化数据库连接,使用连接池。解决任务忙碌状态提示状态码非423问题
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()) { @@ -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> |
