From 86ec354959ce840a638dbd37c31d1e03e2301426 Mon Sep 17 00:00:00 2001 From: ayi <2084276225@qq.com> Date: Thu, 31 Aug 2023 23:37:34 +0800 Subject: [PATCH] feature: hippo4j config model in nacos config before check --- .../api/BootstrapPropertiesInterface.java | 9 ++++++++ .../core/enable/BeforeCheckConfiguration.java | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/kernel/dynamic/api/src/main/java/cn/hippo4j/threadpool/dynamic/api/BootstrapPropertiesInterface.java b/kernel/dynamic/api/src/main/java/cn/hippo4j/threadpool/dynamic/api/BootstrapPropertiesInterface.java index 324cffe6..3f519de4 100644 --- a/kernel/dynamic/api/src/main/java/cn/hippo4j/threadpool/dynamic/api/BootstrapPropertiesInterface.java +++ b/kernel/dynamic/api/src/main/java/cn/hippo4j/threadpool/dynamic/api/BootstrapPropertiesInterface.java @@ -17,6 +17,8 @@ package cn.hippo4j.threadpool.dynamic.api; +import java.util.Map; + /** * Bootstrap properties interface. */ @@ -70,4 +72,11 @@ public interface BootstrapPropertiesInterface { default Boolean getBanner() { return null; } + + /** + * Get nacos + */ + default Map getNacos() { + return null; + } } diff --git a/threadpool/core/src/main/java/cn/hippo4j/core/enable/BeforeCheckConfiguration.java b/threadpool/core/src/main/java/cn/hippo4j/core/enable/BeforeCheckConfiguration.java index c6640d93..4ce706b7 100644 --- a/threadpool/core/src/main/java/cn/hippo4j/core/enable/BeforeCheckConfiguration.java +++ b/threadpool/core/src/main/java/cn/hippo4j/core/enable/BeforeCheckConfiguration.java @@ -17,6 +17,7 @@ package cn.hippo4j.core.enable; +import cn.hippo4j.common.toolkit.MapUtil; import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.core.config.ConfigEmptyException; import cn.hippo4j.threadpool.dynamic.api.BootstrapPropertiesInterface; @@ -26,6 +27,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; +import java.util.Map; import java.util.Objects; /** @@ -36,6 +38,7 @@ import java.util.Objects; public class BeforeCheckConfiguration { private final String bootstrapPropertiesClassName = "cn.hippo4j.springboot.starter.config.BootstrapProperties"; + private final String bootstrapConfigPropertiesClassName = "cn.hippo4j.threadpool.dynamic.mode.config.properties.BootstrapConfigProperties"; @Bean public BeforeCheckConfiguration.BeforeCheck dynamicThreadPoolBeforeCheckBean(@Autowired(required = false) BootstrapPropertiesInterface properties, @@ -68,6 +71,24 @@ public class BeforeCheckConfiguration { "Please check whether the [spring.application.name] configuration is empty or an empty string."); } } + checkFlag = properties != null && Objects.equals(bootstrapConfigPropertiesClassName, properties.getClass().getName()) && properties.getEnable(); + if (checkFlag) { + Map nacos = properties.getNacos(); + if (MapUtil.isNotEmpty(nacos)) { + String group = nacos.get("group"); + if (StringUtil.isBlank(group)) { + throw new ConfigEmptyException( + "Web server failed to start. The dynamic thread pool config nacos group is empty.", + "Please check whether the [spring.dynamic.thread-pool.config-nacos-group] configuration is empty or an empty string."); + } + String dataId = nacos.get("data-id"); + if (StringUtil.isBlank(dataId)) { + throw new ConfigEmptyException( + "Web server failed to start. The dynamic thread pool config nacos data-id is empty.", + "Please check whether the [spring.dynamic.thread-pool.config-nacos-data-id] configuration is empty or an empty string."); + } + } + } return new BeforeCheckConfiguration.BeforeCheck(); }