diff --git a/muyu-modules/muyu-data-source/muyu-data-source-client/pom.xml b/muyu-modules/muyu-data-source/muyu-data-source-client/pom.xml
index d5a97d0..0fc701a 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-client/pom.xml
+++ b/muyu-modules/muyu-data-source/muyu-data-source-client/pom.xml
@@ -16,5 +16,11 @@
17
UTF-8
-
+
+
+ com.muyu
+ muyu-data-source-remote
+ 3.6.3
+
+
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientRunner.java b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientRunner.java
new file mode 100644
index 0000000..6daa345
--- /dev/null
+++ b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientRunner.java
@@ -0,0 +1,55 @@
+package com.muyu.data.source.client.config;
+
+import com.muyu.common.core.domain.Result;
+import com.muyu.data.source.config.DataSourceConfig;
+import com.muyu.data.source.domain.DataSource;
+import com.muyu.data.source.domain.DatabaseType;
+import com.muyu.data.source.remote.RemoteDataSourceService;
+import com.muyu.data.source.remote.RemoteDataTypeService;
+import java.sql.Connection;
+import java.util.List;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 初始化加载
+ *
+ * @author HuFangMing
+ * @ClassName: SourceClientRunner
+ * @createTime: 2024/5/13 14:15
+ */
+
+@Log4j2
+@Configuration
+public class SourceClientRunner implements ApplicationRunner {
+
+ @Autowired
+ private RemoteDataSourceService remoteDataSourceService;
+ @Autowired
+ private RemoteDataTypeService remoteDataTypeService;
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ Result> dataSourceListResult = remoteDataSourceService.getDataSourceList();
+ List dataSourceList = dataSourceListResult.getData();
+ dataSourceList.stream().forEach(dataSource -> {
+ Result databaseTypeResult = remoteDataTypeService.getDataType(dataSource.getDatabaseName());
+ DatabaseType databaseType = databaseTypeResult.getData();
+ DataSourceConfig.init(dataSource,databaseType);
+ });
+ Long key = dataSourceList.get(0).getId();
+ log.info("查看连接池");
+ DataSourceConfig.size(key);
+ Thread.sleep(500);
+ log.info("取出一个链接,查看连接池");
+ Connection connection = DataSourceConfig.getConnection(key);
+ DataSourceConfig.size(key);
+ Thread.sleep(500);
+ log.info("返回一个连接,查看连接池");
+ DataSourceConfig.returnConn(connection);
+ DataSourceConfig.size(key);
+ }
+}
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/pom.xml b/muyu-modules/muyu-data-source/muyu-data-source-common/pom.xml
index 0ff2638..5d7ad7c 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-common/pom.xml
+++ b/muyu-modules/muyu-data-source/muyu-data-source-common/pom.xml
@@ -29,5 +29,82 @@
com.muyu
muyu-common-log
+
+
+ com.alibaba
+ druid
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ com.muyu
+ muyu-modules-system
+ 3.6.3
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${swagger.fox.version}
+
+
+
+
+ com.mysql
+ mysql-connector-j
+
+
+
+
+ com.muyu
+ muyu-common-datasource
+
+
+
+
+ com.muyu
+ muyu-common-datascope
+
+
+
+
+ com.muyu
+ muyu-common-log
+
+
+
+
+ com.muyu
+ muyu-common-swagger
+
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/config/DataSourceConfig.java b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/config/DataSourceConfig.java
new file mode 100644
index 0000000..05b509f
--- /dev/null
+++ b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/config/DataSourceConfig.java
@@ -0,0 +1,68 @@
+package com.muyu.data.source.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.pool.DruidPooledConnection;
+import com.muyu.data.source.domain.DataSource;
+import com.muyu.data.source.domain.DatabaseType;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.HashMap;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.stereotype.Component;
+
+/**
+ * 数据源配置连接池
+ *
+ * @author HuFangMing
+ * @ClassName: DataSourceConfig
+ * @createTime: 2024/5/13 15:25
+ */
+
+@Component
+@Log4j2
+public class DataSourceConfig {
+ private static HashMap dataSourceMap=new HashMap<>();
+
+ public static void init(DataSource dataSource, DatabaseType databaseType){
+ DruidDataSource druidDataSource = new DruidDataSource();
+ druidDataSource.setUsername(dataSource.getUser());
+ druidDataSource.setPassword(dataSource.getPassword());
+ druidDataSource.setUrl(databaseType.getUrlPre()+dataSource.getHost()+":"+dataSource.getPort()+"/"+dataSource.getDatabaseName()+"?"+dataSource.getConnectionParam());
+ druidDataSource.setDriverClassName(databaseType.getDriverManager());
+ druidDataSource.setMinIdle(Math.toIntExact(dataSource.getMaxWaitSize()));
+ druidDataSource.setMaxActive(Math.toIntExact(dataSource.getMaxNum()));
+ druidDataSource.setInitialSize(Math.toIntExact(dataSource.getInitNum()));
+
+ try {
+ druidDataSource.init();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ dataSourceMap.put(dataSource.getId(), druidDataSource);
+ }
+
+ public static Connection getConnection(Long key){
+ DruidDataSource druidDataSource=dataSourceMap.get(key);
+ try {
+ DruidPooledConnection connection = druidDataSource.getConnection();
+ return connection;
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static void returnConn(Connection connection){
+ try {
+ connection.close();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static void size(Long key){
+ DruidDataSource druidDataSource=dataSourceMap.get(key);
+ int activeCount = druidDataSource.getActiveCount();
+ int poolingCount = druidDataSource.getPoolingCount();
+ log.info(key+"连接池正在使用连接"+activeCount+"个,线程池中线程数量"+poolingCount+"个");
+ }
+}
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/RemoteDataSourceService.java b/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/RemoteDataSourceService.java
index a8e47ac..c173116 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/RemoteDataSourceService.java
+++ b/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/RemoteDataSourceService.java
@@ -3,6 +3,7 @@ package com.muyu.data.source.remote;
import com.muyu.common.core.constant.ServiceNameConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.data.source.domain.DataSource;
+import com.muyu.data.source.remote.factory.RemoteDataSourceFactory;
import java.util.List;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@@ -17,10 +18,10 @@ import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(contextId ="RemoteDataSourceService",
value = ServiceNameConstants.SOURCE_SERVICE,
fallbackFactory = RemoteDataSourceFactory.class,
- path = "/data"
+ path = "/data/source"
)
public interface RemoteDataSourceService {
-@GetMapping("/getDataSourceList")
+@GetMapping("getDataSourceList/")
public Result> getDataSourceList();
}
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/RemoteDataSourceFactory.java b/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/factory/RemoteDataSourceFactory.java
similarity index 85%
rename from muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/RemoteDataSourceFactory.java
rename to muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/factory/RemoteDataSourceFactory.java
index d43c6b9..3985f75 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/RemoteDataSourceFactory.java
+++ b/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/factory/RemoteDataSourceFactory.java
@@ -1,7 +1,8 @@
-package com.muyu.data.source.remote;
+package com.muyu.data.source.remote.factory;
import com.muyu.common.core.domain.Result;
import com.muyu.data.source.domain.DataSource;
+import com.muyu.data.source.remote.RemoteDataSourceService;
import java.util.List;
import org.springframework.cloud.openfeign.FallbackFactory;
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/factory/RemoteDataTypeFactory.java b/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/factory/RemoteDataTypeFactory.java
new file mode 100644
index 0000000..5a7a357
--- /dev/null
+++ b/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/java/com/muyu/data/source/remote/factory/RemoteDataTypeFactory.java
@@ -0,0 +1,24 @@
+package com.muyu.data.source.remote.factory;
+
+import com.muyu.common.core.domain.Result;
+import com.muyu.data.source.domain.DatabaseType;
+import com.muyu.data.source.remote.RemoteDataTypeService;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+/**
+ * 熔断
+ *
+ * @author CHX
+ * on 2024/5/10 星期五
+ */
+public class RemoteDataTypeFactory implements FallbackFactory {
+ @Override
+ public RemoteDataTypeService create(Throwable cause) {
+ return new RemoteDataTypeService() {
+ @Override
+ public Result getDataType(String databaseName) {
+ return Result.error(cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..f095f3e
--- /dev/null
+++ b/muyu-modules/muyu-data-source/muyu-data-source-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1,2 @@
+com.muyu.source.remote.factory.RemoteDataSourceFactory
+com.muyu.source.remote.factory.RemoteDataTypeFactory
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java
index c207c8d..2751f7b 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java
+++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java
@@ -55,6 +55,18 @@ public class DataSourceController extends BaseController {
return getDataTable(list);
}
+ /**
+ * 获取数据源列表信息
+ */
+
+ @ApiOperation("获取数据源列表信息")
+ @GetMapping("/getDataSourceList")
+ public Result> getDataSourceList(){
+ List list=dataSourceService.list();
+ return Result.success(list);
+ }
+
+
/**
* 导出数据源列表
*/
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DatabaseTypeController.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DatabaseTypeController.java
index e786dc0..10fa7eb 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DatabaseTypeController.java
+++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DatabaseTypeController.java
@@ -1,5 +1,6 @@
package com.muyu.data.source.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
@@ -109,8 +110,16 @@ public class DatabaseTypeController extends BaseController {
return toAjax(databaseTypeService.removeBatchByIds(databaseIds));
}
-
-
+/**
+ * 查询数据源类型对象
+ */
+@ApiOperation("查询数据源类型对象")
+@GetMapping("/getDatabaseType/{databaseName}")
+public Result getDatabaseType(@PathVariable("databaseName") String databaseName) {
+ return Result.success(databaseTypeService.getOne(new LambdaQueryWrapper<>(){{
+ eq(DatabaseType::getDatabaseName,databaseName);
+ }}));
+}
}
diff --git a/muyu-modules/muyu-data-test/pom.xml b/muyu-modules/muyu-data-test/pom.xml
new file mode 100644
index 0000000..dbb9a79
--- /dev/null
+++ b/muyu-modules/muyu-data-test/pom.xml
@@ -0,0 +1,68 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-modules
+ 3.6.3
+
+
+ muyu-data-test
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+ com.muyu
+ muyu-data-source-client
+ 3.6.3
+
+
+
+ com.muyu
+ muyu-rule-client
+ 3.6.3
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${swagger.fox.version}
+
+
+ com.muyu
+ muyu-common-swagger
+
+
+
+
diff --git a/muyu-modules/muyu-data-test/src/main/java/data/test/MuYuDataTestApplication.java b/muyu-modules/muyu-data-test/src/main/java/data/test/MuYuDataTestApplication.java
new file mode 100644
index 0000000..c97d657
--- /dev/null
+++ b/muyu-modules/muyu-data-test/src/main/java/data/test/MuYuDataTestApplication.java
@@ -0,0 +1,25 @@
+package data.test;
+
+import com.muyu.common.security.annotation.EnableCustomConfig;
+import com.muyu.common.security.annotation.EnableMyFeignClients;
+import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+
+/**
+ * 数据测试启动类
+ *
+ * @author HuFangMing
+ * @ClassName: MuYuDataTestApplication
+ * @createTime: 2024/5/13 9:40
+ */
+@EnableCustomConfig
+@EnableCustomSwagger2
+@EnableMyFeignClients
+@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
+public class MuYuDataTestApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(MuYuDataTestApplication.class, args);
+ }
+}
diff --git a/muyu-modules/muyu-data-test/src/main/resources/bootstrap.yml b/muyu-modules/muyu-data-test/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..7bd89bf
--- /dev/null
+++ b/muyu-modules/muyu-data-test/src/main/resources/bootstrap.yml
@@ -0,0 +1,27 @@
+# Tomcat
+server:
+ port: 9260
+
+# Spring
+spring:
+ application:
+ # 应用名称
+ name: muyu-data-test
+ profiles:
+ # 环境配置
+ active: dev
+ cloud:
+ nacos:
+ discovery:
+ # 服务注册地址
+ server-addr: 192.168.16.128:8848
+ namespace: ry
+ config:
+ # 配置中心地址
+ server-addr: 192.168.16.128:8848
+ namespace: ry
+ # 配置文件格式
+ file-extension: yml
+ # 共享配置
+ shared-configs:
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
diff --git a/muyu-modules/muyu-data-test/src/main/resources/logback.xml b/muyu-modules/muyu-data-test/src/main/resources/logback.xml
new file mode 100644
index 0000000..c8811bb
--- /dev/null
+++ b/muyu-modules/muyu-data-test/src/main/resources/logback.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+ ${log.pattern}
+
+
+
+
+
+ ${log.path}/info.log
+
+
+
+ ${log.path}/info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/muyu-modules/muyu-rule_engine/muyu-rule-client/src/main/java/com/muyu/rule/client/config/RuleEngineClientRunner.java b/muyu-modules/muyu-rule_engine/muyu-rule-client/src/main/java/com/muyu/rule/client/config/RuleEngineClientRunner.java
deleted file mode 100644
index f31f897..0000000
--- a/muyu-modules/muyu-rule_engine/muyu-rule-client/src/main/java/com/muyu/rule/client/config/RuleEngineClientRunner.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.muyu.rule.client.config;
-
-import com.muyu.common.core.domain.Result;
-import com.muyu.ruleEngine.domain.EngineMaintenance;
-import com.muyu.ruleEngine.remote.RemoteEngineMaintenanceService;
-import java.util.List;
-import lombok.extern.log4j.Log4j2;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-
-/**
- * 初始化加载
- *
- * @author HuFangMing
- * @ClassName: RuleEngineClientRunner
- * @createTime: 2024/5/10 15:17
- */
-
-@Log4j2
-public class RuleEngineClientRunner implements ApplicationRunner {
-@Autowired
- private RemoteEngineMaintenanceService engineMaintenanceService;
-
-
- @Override
- public void run(ApplicationArguments args) throws Exception {
- Result> maintenanceList = engineMaintenanceService.getMaintenanceList();
-
- log.info(maintenanceList);
- }
-}
diff --git a/muyu-modules/pom.xml b/muyu-modules/pom.xml
index 0c1769b..f04ff50 100644
--- a/muyu-modules/pom.xml
+++ b/muyu-modules/pom.xml
@@ -15,6 +15,7 @@
muyu-file
muyu-data-source
muyu-rule_engine
+ muyu-data-test
muyu-modules
diff --git a/pom.xml b/pom.xml
index 174e869..31a1151 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,7 @@
2.9.0
42.5.0
2.14.3
+ 1.2.6
@@ -143,7 +144,12 @@
fastjson2
${fastjson.version}
-
+
+
+ com.alibaba
+ druid
+ ${druid.version}
+
io.jsonwebtoken