diff --git a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/jetty/DefaultJettyWebThreadPoolHandler.java b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/jetty/DefaultJettyWebThreadPoolHandler.java index 407221c9..c0cee096 100644 --- a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/jetty/DefaultJettyWebThreadPoolHandler.java +++ b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/jetty/DefaultJettyWebThreadPoolHandler.java @@ -18,20 +18,10 @@ package cn.hippo4j.adapter.web.jetty; import cn.hippo4j.adapter.web.DefaultAbstractWebThreadPoolService; -import cn.hippo4j.adapter.web.IWebThreadPoolHandlerSupport; -import cn.hippo4j.common.constant.ChangeThreadPoolConstants; -import cn.hippo4j.common.enums.WebContainerEnum; -import cn.hippo4j.common.model.ThreadPoolBaseInfo; -import cn.hippo4j.common.model.ThreadPoolParameter; -import cn.hippo4j.common.model.ThreadPoolParameterInfo; -import cn.hippo4j.common.model.ThreadPoolRunStateInfo; -import cn.hippo4j.common.toolkit.ReflectUtil; import lombok.extern.slf4j.Slf4j; -import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.springframework.boot.web.embedded.jetty.JettyWebServer; import org.springframework.boot.web.server.WebServer; -import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; /** diff --git a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/tomcat/TomcatWebThreadPoolHandlerSupport.java b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/tomcat/TomcatWebThreadPoolHandlerSupport.java index 5c8b359c..446a4b43 100644 --- a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/tomcat/TomcatWebThreadPoolHandlerSupport.java +++ b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/tomcat/TomcatWebThreadPoolHandlerSupport.java @@ -91,7 +91,7 @@ public class TomcatWebThreadPoolHandlerSupport implements IWebThreadPoolHandlerS long keepAliveTime = tomcatThreadPoolExecutor.getKeepAliveTime(TimeUnit.SECONDS); parameterInfo.setCoreSize(minThreads); parameterInfo.setMaxSize(maxThreads); - parameterInfo.setKeepAliveTime((int) keepAliveTime); + parameterInfo.setKeepAliveTime(keepAliveTime); } catch (Exception ex) { log.error("Failed to get the tomcat thread pool parameter.", ex); } diff --git a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/undertow/DefaultUndertowWebThreadPoolHandler.java b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/undertow/DefaultUndertowWebThreadPoolHandler.java index 5d874549..5b2f81ae 100644 --- a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/undertow/DefaultUndertowWebThreadPoolHandler.java +++ b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/undertow/DefaultUndertowWebThreadPoolHandler.java @@ -22,12 +22,6 @@ import java.util.Objects; import java.util.concurrent.Executor; import cn.hippo4j.adapter.web.DefaultAbstractWebThreadPoolService; -import cn.hippo4j.adapter.web.IWebThreadPoolHandlerSupport; -import cn.hippo4j.common.enums.WebContainerEnum; -import cn.hippo4j.common.model.ThreadPoolBaseInfo; -import cn.hippo4j.common.model.ThreadPoolParameter; -import cn.hippo4j.common.model.ThreadPoolParameterInfo; -import cn.hippo4j.common.model.ThreadPoolRunStateInfo; import io.undertow.Undertow; import lombok.extern.slf4j.Slf4j; diff --git a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/undertow/UndertowWebThreadPoolHandlerSupport.java b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/undertow/UndertowWebThreadPoolHandlerSupport.java index e37abe0f..6917a26a 100644 --- a/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/undertow/UndertowWebThreadPoolHandlerSupport.java +++ b/hippo4j-adapter/hippo4j-adapter-web/src/main/java/cn/hippo4j/adapter/web/undertow/UndertowWebThreadPoolHandlerSupport.java @@ -82,7 +82,7 @@ public class UndertowWebThreadPoolHandlerSupport implements IWebThreadPoolHandle XnioWorker xnioWorker = (XnioWorker) executor; int minThreads = xnioWorker.getOption(Options.WORKER_TASK_CORE_THREADS); int maxThreads = xnioWorker.getOption(Options.WORKER_TASK_MAX_THREADS); - int keepAliveTime = xnioWorker.getOption(Options.WORKER_TASK_KEEPALIVE); + long keepAliveTime = xnioWorker.getOption(Options.WORKER_TASK_KEEPALIVE); parameterInfo.setCoreSize(minThreads); parameterInfo.setMaxSize(maxThreads); parameterInfo.setKeepAliveTime(keepAliveTime); @@ -135,7 +135,7 @@ public class UndertowWebThreadPoolHandlerSupport implements IWebThreadPoolHandle XnioWorker xnioWorker = (XnioWorker) executor; Integer coreSize = threadPoolParameterInfo.corePoolSizeAdapt(); Integer maxSize = threadPoolParameterInfo.maximumPoolSizeAdapt(); - Integer keepAliveTime = threadPoolParameterInfo.getKeepAliveTime(); + int keepAliveTime = threadPoolParameterInfo.getKeepAliveTime().intValue(); int originalCoreSize = xnioWorker.getOption(Options.WORKER_TASK_CORE_THREADS); int originalMaximumPoolSize = xnioWorker.getOption(Options.WORKER_TASK_MAX_THREADS); int originalKeepAliveTime = xnioWorker.getOption(Options.WORKER_TASK_KEEPALIVE); diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/model/ThreadPoolParameter.java b/hippo4j-common/src/main/java/cn/hippo4j/common/model/ThreadPoolParameter.java index be74b478..26101088 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/model/ThreadPoolParameter.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/model/ThreadPoolParameter.java @@ -76,7 +76,7 @@ public interface ThreadPoolParameter { * * @return */ - Integer getKeepAliveTime(); + Long getKeepAliveTime(); /** * Get execute time out diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/model/ThreadPoolParameterInfo.java b/hippo4j-common/src/main/java/cn/hippo4j/common/model/ThreadPoolParameterInfo.java index 48bf529d..1a912c2c 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/model/ThreadPoolParameterInfo.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/model/ThreadPoolParameterInfo.java @@ -94,7 +94,7 @@ public class ThreadPoolParameterInfo implements ThreadPoolParameter, Serializabl /** * Keep alive time */ - private Integer keepAliveTime; + private Long keepAliveTime; /** * Execute time out diff --git a/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/ContentUtilTest.java b/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/ContentUtilTest.java index a8cd74c9..02baa272 100644 --- a/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/ContentUtilTest.java +++ b/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/ContentUtilTest.java @@ -29,7 +29,7 @@ public class ContentUtilTest { ":1,\"capacityAlarm\":80,\"livenessAlarm\":80,\"allowCoreThreadTimeOut\":1}"; ThreadPoolParameterInfo threadPoolParameterInfo = ThreadPoolParameterInfo.builder().tenantId("prescription") .itemId("dynamic-threadpool-example").tpId("message-consume").content("描述信息").corePoolSize(1) - .maximumPoolSize(2).queueType(1).capacity(4).keepAliveTime(513).executeTimeOut(null).rejectedType(4) + .maximumPoolSize(2).queueType(1).capacity(4).keepAliveTime(513L).executeTimeOut(null).rejectedType(4) .isAlarm(1).capacityAlarm(80).livenessAlarm(80).allowCoreThreadTimeOut(1).build(); Assert.isTrue(testText.equals(ContentUtil.getPoolContent(threadPoolParameterInfo))); } diff --git a/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/Md5UtilTest.java b/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/Md5UtilTest.java index 0c9191b1..adf128ed 100644 --- a/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/Md5UtilTest.java +++ b/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/Md5UtilTest.java @@ -53,7 +53,7 @@ public class Md5UtilTest { String md5Result = "ef5ea7cb47377fb9fb85a7125e76715d"; ThreadPoolParameterInfo threadPoolParameterInfo = ThreadPoolParameterInfo.builder().tenantId("prescription") .itemId("dynamic-threadpool-example").tpId("message-consume").content("描述信息").corePoolSize(1) - .maximumPoolSize(2).queueType(1).capacity(4).keepAliveTime(513).executeTimeOut(null).rejectedType(4) + .maximumPoolSize(2).queueType(1).capacity(4).keepAliveTime(513L).executeTimeOut(null).rejectedType(4) .isAlarm(1).capacityAlarm(80).livenessAlarm(80).allowCoreThreadTimeOut(1).build(); Assert.isTrue(md5Result.equals(Md5Util.getTpContentMd5(threadPoolParameterInfo))); } diff --git a/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/SingletonTest.java b/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/SingletonTest.java index 1f111e82..2e3c49c7 100644 --- a/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/SingletonTest.java +++ b/hippo4j-common/src/test/java/cn/hippo4j/common/toolkit/SingletonTest.java @@ -30,7 +30,7 @@ public class SingletonTest { Assert.assertEquals("hippo4j", Singleton.get("userName")); ThreadPoolParameterInfo threadPoolParameterInfo = ThreadPoolParameterInfo.builder().tenantId("prescription") .itemId("dynamic-threadpool-example").tpId("message-consume").content("描述信息").corePoolSize(1) - .maximumPoolSize(2).queueType(1).capacity(4).keepAliveTime(513).executeTimeOut(null).rejectedType(4) + .maximumPoolSize(2).queueType(1).capacity(4).keepAliveTime(513L).executeTimeOut(null).rejectedType(4) .isAlarm(1).capacityAlarm(80).livenessAlarm(80).allowCoreThreadTimeOut(1).build(); Singleton.put(threadPoolParameterInfo); Assert.assertEquals(threadPoolParameterInfo, Singleton.get(ThreadPoolParameterInfo.class.getName())); diff --git a/hippo4j-server/hippo4j-config/src/main/java/cn/hippo4j/config/model/ConfigInfoBase.java b/hippo4j-server/hippo4j-config/src/main/java/cn/hippo4j/config/model/ConfigInfoBase.java index fe7fbcc2..08612edd 100644 --- a/hippo4j-server/hippo4j-config/src/main/java/cn/hippo4j/config/model/ConfigInfoBase.java +++ b/hippo4j-server/hippo4j-config/src/main/java/cn/hippo4j/config/model/ConfigInfoBase.java @@ -81,7 +81,7 @@ public class ConfigInfoBase implements Serializable { /** * keepAliveTime */ - private Integer keepAliveTime; + private Long keepAliveTime; /** * executeTimeOut diff --git a/hippo4j-spring-boot/hippo4j-config-spring-boot-1x-starter/src/main/java/cn/hippo4j/config/springboot1x/starter/web/jetty/JettyWebThreadPoolHandler1x.java b/hippo4j-spring-boot/hippo4j-config-spring-boot-1x-starter/src/main/java/cn/hippo4j/config/springboot1x/starter/web/jetty/JettyWebThreadPoolHandler1x.java index be7bac20..4f300e2b 100644 --- a/hippo4j-spring-boot/hippo4j-config-spring-boot-1x-starter/src/main/java/cn/hippo4j/config/springboot1x/starter/web/jetty/JettyWebThreadPoolHandler1x.java +++ b/hippo4j-spring-boot/hippo4j-config-spring-boot-1x-starter/src/main/java/cn/hippo4j/config/springboot1x/starter/web/jetty/JettyWebThreadPoolHandler1x.java @@ -17,14 +17,7 @@ package cn.hippo4j.config.springboot1x.starter.web.jetty; -import cn.hippo4j.adapter.web.IWebThreadPoolHandlerSupport; import cn.hippo4j.adapter.web.jetty.JettyWebThreadPoolHandlerSupport; -import cn.hippo4j.common.enums.WebContainerEnum; -import cn.hippo4j.common.model.ThreadPoolBaseInfo; -import cn.hippo4j.common.model.ThreadPoolParameter; -import cn.hippo4j.common.model.ThreadPoolParameterInfo; -import cn.hippo4j.common.model.ThreadPoolRunStateInfo; -import cn.hippo4j.common.web.exception.ServiceException; import cn.hippo4j.config.springboot1x.starter.web.AbstractWebThreadPoolService1x; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer; diff --git a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/config/DynamicThreadPoolAutoConfiguration.java b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/config/DynamicThreadPoolAutoConfiguration.java index 5b76bc9f..7e47c419 100644 --- a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/config/DynamicThreadPoolAutoConfiguration.java +++ b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/config/DynamicThreadPoolAutoConfiguration.java @@ -127,8 +127,9 @@ public class DynamicThreadPoolAutoConfiguration { } @Bean - public WebExecutorRefreshListener hippo4jWebExecutorListener() { - return new WebExecutorRefreshListener(); + @SuppressWarnings("all") + public WebExecutorRefreshListener hippo4jWebExecutorListener(ThreadPoolConfigChange threadPoolConfigChange) { + return new WebExecutorRefreshListener(threadPoolConfigChange); } @Bean diff --git a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/config/WebThreadPoolProperties.java b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/config/WebThreadPoolProperties.java index f2d1ff02..c4154d65 100644 --- a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/config/WebThreadPoolProperties.java +++ b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/config/WebThreadPoolProperties.java @@ -38,7 +38,7 @@ public class WebThreadPoolProperties { /** * Keep alive time */ - private Integer keepAliveTime; + private Long keepAliveTime; /** * Nodes, application startup is not affect, change properties is effect diff --git a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/event/WebExecutorRefreshListener.java b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/event/WebExecutorRefreshListener.java index a7f9e60d..e741cfc5 100644 --- a/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/event/WebExecutorRefreshListener.java +++ b/hippo4j-spring-boot/hippo4j-config-spring-boot-starter/src/main/java/cn/hippo4j/config/springboot/starter/refresher/event/WebExecutorRefreshListener.java @@ -19,11 +19,14 @@ package cn.hippo4j.config.springboot.starter.refresher.event; import cn.hippo4j.adapter.web.WebThreadPoolHandlerChoose; import cn.hippo4j.adapter.web.WebThreadPoolService; +import cn.hippo4j.common.api.NotifyRequest; +import cn.hippo4j.common.api.ThreadPoolConfigChange; import cn.hippo4j.common.config.ApplicationContextHolder; import cn.hippo4j.common.model.ThreadPoolParameter; import cn.hippo4j.common.model.ThreadPoolParameterInfo; import cn.hippo4j.config.springboot.starter.config.BootstrapConfigProperties; import cn.hippo4j.config.springboot.starter.config.WebThreadPoolProperties; +import cn.hippo4j.message.request.ChangeParameterNotifyRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; @@ -37,8 +40,15 @@ import static cn.hippo4j.config.springboot.starter.refresher.event.Hippo4jConfig */ @Slf4j @Order(WEB_EXECUTOR_LISTENER) +@SuppressWarnings("all") public class WebExecutorRefreshListener extends AbstractRefreshListener { + private final ThreadPoolConfigChange configChange; + + public WebExecutorRefreshListener(ThreadPoolConfigChange configChange) { + this.configChange = configChange; + } + @Override public String getNodes(WebThreadPoolProperties properties) { return properties.getNodes(); @@ -71,6 +81,7 @@ public class WebExecutorRefreshListener extends AbstractRefreshListener