diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DiscoveryConfig.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DiscoveryConfig.java index 8bc92a08..7140c216 100644 --- a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DiscoveryConfig.java +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DiscoveryConfig.java @@ -4,8 +4,8 @@ import cn.hippo4j.common.model.InstanceInfo; import cn.hippo4j.common.toolkit.ContentUtil; import cn.hippo4j.starter.core.DiscoveryClient; import cn.hippo4j.starter.remote.HttpAgent; +import cn.hippo4j.starter.toolkit.IdentifyUtil; import cn.hippo4j.starter.toolkit.inet.InetUtils; -import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import org.springframework.context.annotation.Bean; @@ -29,7 +29,7 @@ public class DiscoveryConfig { private final BootstrapProperties properties; - private final InetUtils inetUtils; + private final InetUtils hippo4JInetUtils; @Bean @SneakyThrows @@ -39,8 +39,8 @@ public class DiscoveryConfig { String applicationName = environment.getProperty("spring.application.name"); InstanceInfo instanceInfo = new InstanceInfo(); - instanceInfo.setInstanceId(getDefaultInstanceId(environment, inetUtils)) - .setIpApplicationName(getIpApplicationName(environment, inetUtils)) + instanceInfo.setInstanceId(getDefaultInstanceId(environment, hippo4JInetUtils)) + .setIpApplicationName(getIpApplicationName(environment, hippo4JInetUtils)) .setHostName(InetAddress.getLocalHost().getHostAddress()) .setGroupKey(itemId + "+" + namespace) .setAppName(applicationName) @@ -52,11 +52,8 @@ public class DiscoveryConfig { .toString(); instanceInfo.setCallBackUrl(callBackUrl); - String ip = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); - String port = environment.getProperty("server.port"); - String identification = StrUtil.builder(ip, ":", port).toString(); - instanceInfo.setIdentify(identification); - + String identify = IdentifyUtil.generate(environment, hippo4JInetUtils); + instanceInfo.setIdentify(identify); return instanceInfo; } diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DynamicThreadPoolAutoConfiguration.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DynamicThreadPoolAutoConfiguration.java index e5824046..79b2c938 100644 --- a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DynamicThreadPoolAutoConfiguration.java +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DynamicThreadPoolAutoConfiguration.java @@ -1,6 +1,5 @@ package cn.hippo4j.starter.config; -import cn.hutool.core.util.StrUtil; import cn.hippo4j.common.config.ApplicationContextHolder; import cn.hippo4j.starter.controller.PoolRunStateController; import cn.hippo4j.starter.core.ConfigService; @@ -10,7 +9,9 @@ import cn.hippo4j.starter.core.ThreadPoolOperation; import cn.hippo4j.starter.enable.MarkerConfiguration; import cn.hippo4j.starter.handler.DynamicThreadPoolBannerHandler; import cn.hippo4j.starter.remote.HttpAgent; +import cn.hippo4j.starter.toolkit.IdentifyUtil; import cn.hippo4j.starter.toolkit.inet.InetUtils; +import cn.hutool.core.util.IdUtil; import lombok.AllArgsConstructor; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -38,6 +39,8 @@ public class DynamicThreadPoolAutoConfiguration { private final ConfigurableEnvironment environment; + public static final String CLIENT_IDENTIFICATION_VALUE = IdUtil.simpleUUID(); + @Bean public DynamicThreadPoolBannerHandler threadPoolBannerHandler() { return new DynamicThreadPoolBannerHandler(properties); @@ -52,10 +55,8 @@ public class DynamicThreadPoolAutoConfiguration { @Bean @SuppressWarnings("all") public ConfigService configService(HttpAgent httpAgent, InetUtils hippo4JInetUtils) { - String ip = hippo4JInetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); - String port = environment.getProperty("server.port"); - String identification = StrUtil.builder(ip, ":", port).toString(); - return new ThreadPoolConfigService(httpAgent, identification); + String identify = IdentifyUtil.generate(environment, hippo4JInetUtils); + return new ThreadPoolConfigService(httpAgent, identify); } @Bean diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/ClientWorker.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/ClientWorker.java index 6330dbd8..55eab833 100644 --- a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/ClientWorker.java +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/core/ClientWorker.java @@ -70,7 +70,7 @@ public class ClientWorker implements DisposableBean { return t; }); - log.info("Client identity :: {}", CLIENT_IDENTIFICATION_VALUE); + log.info("Client identity :: {}", identification); this.executor.scheduleWithFixedDelay(() -> { try { @@ -216,6 +216,7 @@ public class ClientWorker implements DisposableBean { params.put("namespace", namespace); params.put("itemId", itemId); params.put("tpId", tpId); + params.put("instanceId", identification); Result result = agent.httpGetByConfig(CONFIG_CONTROLLER_PATH, null, params, readTimeout); if (result.isSuccess()) { diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/toolkit/IdentifyUtil.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/toolkit/IdentifyUtil.java new file mode 100644 index 00000000..53430027 --- /dev/null +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/toolkit/IdentifyUtil.java @@ -0,0 +1,38 @@ +package cn.hippo4j.starter.toolkit; + +import cn.hippo4j.starter.toolkit.inet.InetUtils; +import cn.hutool.core.util.StrUtil; +import org.springframework.core.env.ConfigurableEnvironment; + +import static cn.hippo4j.common.constant.Constants.IDENTIFY_SLICER_SYMBOL; +import static cn.hippo4j.starter.config.DynamicThreadPoolAutoConfiguration.CLIENT_IDENTIFICATION_VALUE; + +/** + * Identify util. + * + * @author chen.ma + * @date 2021/12/5 22:25 + */ +public class IdentifyUtil { + + /** + * Generate identify. + * + * @param environment + * @param hippo4JInetUtils + * @return + */ + public static String generate(ConfigurableEnvironment environment, InetUtils hippo4JInetUtils) { + String ip = hippo4JInetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); + String port = environment.getProperty("server.port"); + String identification = StrUtil.builder(ip, + ":", + port, + IDENTIFY_SLICER_SYMBOL, + CLIENT_IDENTIFICATION_VALUE + ).toString(); + + return identification; + } + +}