diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java index f1c267e..c29ee2c 100644 --- a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java @@ -25,4 +25,9 @@ public class ServiceNameConstants { * 数据源管理 */ public static final String DATA_SOURCE_SERVICE = "muyu-data-source"; + + /** + * 数据引擎管理 + */ + public static final String RULE_ENGINE_SERVICE = "muyu-ruleengine"; } diff --git a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/DataSourceClientRunner.java b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/DataSourceClientRunner.java index 4c9b16e..41d3cf3 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/DataSourceClientRunner.java +++ b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/DataSourceClientRunner.java @@ -2,6 +2,8 @@ package com.muyu.data.source.client.config; import com.muyu.common.core.domain.Result; import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.data.source.client.pool.MysqlPool; +import com.muyu.data.source.client.pool.config.MysqlPoolConfig; import com.muyu.data.source.domain.DataSource; import com.muyu.data.source.domain.req.DataSourceQueryReq; import com.muyu.data.source.remote.RemoteDataManagerService; @@ -10,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import java.sql.Connection; import java.util.List; /** @@ -31,5 +34,13 @@ public class DataSourceClientRunner implements ApplicationRunner { public void run(ApplicationArguments args) throws Exception { Result> dataSourceList = remoteDataManagerService.postList(new DataSourceQueryReq()); log.info(dataSourceList); + List data = dataSourceList.getData(); + for (DataSource datum : data) { + MysqlPool mysqlPool = new MysqlPool(MysqlPoolConfig.buildConfig(datum)); + mysqlPool.init(); + Connection conn = mysqlPool.getConn(); + mysqlPool.reaplase(conn); + } + } } diff --git a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/pool/BaseConfig.java b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/pool/BaseConfig.java index 687ea8e..117a412 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/pool/BaseConfig.java +++ b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/pool/BaseConfig.java @@ -16,6 +16,7 @@ public class BaseConfig { public static void driver(String driverName){ try { + Class.forName(driverName); } catch (ClassNotFoundException e) { throw new RuntimeException(e); diff --git a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/pool/config/MysqlPoolConfig.java b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/pool/config/MysqlPoolConfig.java index 321cdcb..0323c24 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/pool/config/MysqlPoolConfig.java +++ b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/pool/config/MysqlPoolConfig.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.muyu.common.core.annotation.Excel; import com.muyu.data.source.client.pool.BaseConfig; +import com.muyu.data.source.domain.DataSource; import com.muyu.data.source.domain.SysDataSource; import io.swagger.annotations.ApiModelProperty; import lombok.Builder; @@ -97,12 +98,13 @@ public class MysqlPoolConfig extends BaseConfig { @ApiModelProperty(name = "驱动名称", value = "驱动名称") private String driverName; - public static MysqlPoolConfig buildConfig(SysDataSource sysDataSource) { + public static MysqlPoolConfig buildConfig(DataSource sysDataSource) { return MysqlPoolConfig.builder() .id(sysDataSource.getId()) .initialQuantity(sysDataSource.getInitialQuantity()) .maximumFrequency(sysDataSource.getMaximumFrequency()) .maximumQuantity(sysDataSource.getMaximumQuantity()) + .maximumTime(sysDataSource.getMaximumTime()) .driverName(sysDataSource.getDriverName()) .hostAddress(sysDataSource.getHostAddress()) .hostPort(sysDataSource.getHostPort()) diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/DataSource.java b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/DataSource.java index 3d86c13..fefe28c 100644 --- a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/DataSource.java +++ b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/DataSource.java @@ -106,6 +106,11 @@ public class DataSource extends BaseEntity { @ApiModelProperty(name = "数据库用户密码", value = "数据库用户密码") private String databaseUserPassword; + /** 数据库用户密码 */ + @Excel(name = "连接驱动") + @ApiModelProperty(name = "连接驱动", value = "连接驱动") + private String driverName; + /** * 查询构造器 */ diff --git a/muyu-modules/muyu-data-unit/src/main/java/com/muyu/data/unit/DataSourceUnitApplication.java b/muyu-modules/muyu-data-unit/src/main/java/com/muyu/data/unit/DataSourceUnitApplication.java index e777c2b..ca0d057 100644 --- a/muyu-modules/muyu-data-unit/src/main/java/com/muyu/data/unit/DataSourceUnitApplication.java +++ b/muyu-modules/muyu-data-unit/src/main/java/com/muyu/data/unit/DataSourceUnitApplication.java @@ -5,6 +5,7 @@ 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; /** * 数据启动类 DataSourceApplication @@ -15,7 +16,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableCustomConfig @EnableCustomSwagger2 @EnableMyFeignClients -@SpringBootApplication +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class DataSourceUnitApplication { public static void main(String[] args) { SpringApplication.run(DataSourceUnitApplication.class, args); diff --git a/muyu-modules/muyu-data-unit/src/main/resources/logback.xml b/muyu-modules/muyu-data-unit/src/main/resources/logback.xml index aa340cd..ccca0e5 100644 --- a/muyu-modules/muyu-data-unit/src/main/resources/logback.xml +++ b/muyu-modules/muyu-data-unit/src/main/resources/logback.xml @@ -1,7 +1,7 @@ - + diff --git a/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/pom.xml b/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/pom.xml index f7b4928..b12481f 100644 --- a/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/pom.xml +++ b/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/pom.xml @@ -16,5 +16,23 @@ 17 UTF-8 + + + com.muyu + muyu-ruleengine-remote + 3.6.3 + + + com.alibaba + druid + 1.2.6 + compile + + + com.muyu + muyu-ruleengine-common + 3.6.3 + + diff --git a/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/src/main/java/com/muyu/ruleenign/client/config/RuleEngineClientConfig.java b/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/src/main/java/com/muyu/ruleenign/client/config/RuleEngineClientConfig.java new file mode 100644 index 0000000..e30d326 --- /dev/null +++ b/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/src/main/java/com/muyu/ruleenign/client/config/RuleEngineClientConfig.java @@ -0,0 +1,15 @@ +package com.muyu.ruleenign.client.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Import; + +/** + * 引擎配置RuleEngineClientConfig + * + * @author DeKangLiu + * Date 2024/5/10 19:06 + */ +@ComponentScan +@Import(value = {RuleEngineClientRunner.class}) +public class RuleEngineClientConfig { +} diff --git a/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/src/main/java/com/muyu/ruleenign/client/config/RuleEngineClientRunner.java b/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/src/main/java/com/muyu/ruleenign/client/config/RuleEngineClientRunner.java new file mode 100644 index 0000000..8cb36d2 --- /dev/null +++ b/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/src/main/java/com/muyu/ruleenign/client/config/RuleEngineClientRunner.java @@ -0,0 +1,31 @@ +package com.muyu.ruleenign.client.config; + +import com.muyu.common.core.domain.Result; +import com.muyu.ruleengine.domain.Ruleengine; +import com.muyu.ruleengine.domain.req.RuleengineQueryReq; +import com.muyu.ruleengine.remote.RemoteRuleEngineManagerService; +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.boot.autoconfigure.SpringBootApplication; + +import java.util.List; + +/** + * 引擎初始化加载 RuleEngineClientRunner + * + * @author DeKangLiu + * Date 2024/5/10 19:07 + */ +@Log4j2 +public class RuleEngineClientRunner implements ApplicationRunner { + @Autowired + private RemoteRuleEngineManagerService remoteRuleEngineManagerService; + + @Override + public void run(ApplicationArguments args) throws Exception { + Result> listResult = remoteRuleEngineManagerService.ruleEngineList(new RuleengineQueryReq()); + log.info("初始化加载规则引擎列表:{}", listResult); + } +} diff --git a/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..93ba2e2 --- /dev/null +++ b/muyu-modules/muyu-ruleengine/muyu-ruleengine-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.ruleenign.client.config.RuleEngineClientConfig diff --git a/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/pom.xml b/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/pom.xml index 7df207d..56e88b6 100644 --- a/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/pom.xml +++ b/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/pom.xml @@ -16,5 +16,16 @@ 17 UTF-8 + + + com.muyu + muyu-common-core + + + com.muyu + muyu-ruleengine-common + 3.6.3 + + diff --git a/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/src/main/java/com/muyu/ruleengine/remote/RemoteRuleEngineManagerService.java b/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/src/main/java/com/muyu/ruleengine/remote/RemoteRuleEngineManagerService.java new file mode 100644 index 0000000..ecddb69 --- /dev/null +++ b/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/src/main/java/com/muyu/ruleengine/remote/RemoteRuleEngineManagerService.java @@ -0,0 +1,29 @@ +package com.muyu.ruleengine.remote; + +import com.muyu.common.core.constant.ServiceNameConstants; +import com.muyu.common.core.domain.Result; +import com.muyu.ruleengine.domain.Ruleengine; +import com.muyu.ruleengine.domain.req.RuleengineQueryReq; +import com.muyu.ruleengine.remote.factory.RuleEngineManagerFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * 初始化加载 RemoteRuleEngineManagerService + * + * @author DeKangLiu + * Date 2024/5/10 18:55 + */ +@FeignClient( + contextId = "RemoteRuleEngineManagerService", + value = ServiceNameConstants.RULE_ENGINE_SERVICE, + fallbackFactory = RuleEngineManagerFactory.class, + path = "/ruleengine" +) +public interface RemoteRuleEngineManagerService { + @PostMapping("/ruleEngineList") + public Result> ruleEngineList(@RequestBody RuleengineQueryReq ruleengineQueryReq); +} diff --git a/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/src/main/java/com/muyu/ruleengine/remote/factory/RuleEngineManagerFactory.java b/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/src/main/java/com/muyu/ruleengine/remote/factory/RuleEngineManagerFactory.java new file mode 100644 index 0000000..f12a523 --- /dev/null +++ b/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/src/main/java/com/muyu/ruleengine/remote/factory/RuleEngineManagerFactory.java @@ -0,0 +1,28 @@ +package com.muyu.ruleengine.remote.factory; + +import com.muyu.common.core.domain.Result; +import com.muyu.ruleengine.domain.Ruleengine; +import com.muyu.ruleengine.domain.req.RuleengineQueryReq; +import com.muyu.ruleengine.remote.RemoteRuleEngineManagerService; +import org.springframework.cloud.openfeign.FallbackFactory; + +import java.util.List; + +/** + * 熔断 RuleEngineManagerFactory + * + * @author DeKangLiu + * Date 2024/5/10 18:55 + */ +public class RuleEngineManagerFactory implements FallbackFactory { + @Override + public RemoteRuleEngineManagerService create(Throwable cause) { + return new RemoteRuleEngineManagerService() { + + @Override + public Result> ruleEngineList(RuleengineQueryReq ruleengineQueryReq) { + return Result.error(cause.getMessage()); + } + }; + } +} diff --git a/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..dfdf31d --- /dev/null +++ b/muyu-modules/muyu-ruleengine/muyu-ruleengine-remote/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.ruleengine.remote.factory.RuleEngineManagerFactory diff --git a/muyu-modules/muyu-ruleengine/muyu-ruleengine-server/src/main/java/com/muyu/ruleengine/controller/RuleengineController.java b/muyu-modules/muyu-ruleengine/muyu-ruleengine-server/src/main/java/com/muyu/ruleengine/controller/RuleengineController.java index 0b41773..76e2f14 100644 --- a/muyu-modules/muyu-ruleengine/muyu-ruleengine-server/src/main/java/com/muyu/ruleengine/controller/RuleengineController.java +++ b/muyu-modules/muyu-ruleengine/muyu-ruleengine-server/src/main/java/com/muyu/ruleengine/controller/RuleengineController.java @@ -67,6 +67,11 @@ public class RuleengineController extends BaseController { return getDataTable(list); } + @PostMapping("/ruleEngineList") + public Result> ruleEngineList(@RequestBody RuleengineQueryReq ruleengineQueryReq) { + List list = ruleengineService.list(Ruleengine.queryBuild(ruleengineQueryReq)); + return Result.success(list); + } /** * 导出规则引擎列表 */