From 3bc1e4ca43d422b61775effa1570868e6265c512 Mon Sep 17 00:00:00 2001 From: "Luke.Ye" Date: Wed, 27 Aug 2025 15:37:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dnacos=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8F=98=E6=9B=B4=E6=97=A0=E6=B3=95=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/config/DynamicConfig.java | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/knowledge/base/infrastructure/config/DynamicConfig.java b/src/main/java/com/knowledge/base/infrastructure/config/DynamicConfig.java index 3951463..4cc2741 100644 --- a/src/main/java/com/knowledge/base/infrastructure/config/DynamicConfig.java +++ b/src/main/java/com/knowledge/base/infrastructure/config/DynamicConfig.java @@ -6,6 +6,8 @@ import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.cloud.context.scope.refresh.RefreshScopeRefreshedEvent; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @@ -67,23 +69,17 @@ public class DynamicConfig { @Value("${thread.pool.monitor.interval.seconds:60}") private long threadPoolMonitorIntervalSeconds; + @Value("${thread.pool.monitor.enabled:true}") private boolean enableThreadPoolMonitor; - /** - * 来自 nacos 的开关控制是否启用线程池监控 - */ - @Value("${thread.pool.monitor.enabled:true}") - public void setEnableThreadPoolMonitor(boolean enabled) { - boolean changed = this.enableThreadPoolMonitor != enabled; - this.enableThreadPoolMonitor = enabled; - if (changed) { - if (enabled) { - log.info("[config-refresh] enableThreadPoolMonitor=true,刷新线程池监控"); - ThreadPoolMonitorStarter.getInstance().refreshAll(); - } else { - log.info("[config-refresh] enableThreadPoolMonitor=false,清除线程池监控"); - ThreadPoolMonitorStarter.getInstance().clearAll(); - } + // 监听配置刷新事件,主动刷新线程池监控 + @EventListener + public void onRefresh(RefreshScopeRefreshedEvent event) { + log.info("[config-refresh-event] 捕获配置刷新事件,重新判断是否需要刷新线程池监控,当前开关值为:{}", enableThreadPoolMonitor); + if (enableThreadPoolMonitor) { + ThreadPoolMonitorStarter.getInstance().refreshAll(); + } else { + ThreadPoolMonitorStarter.getInstance().clearAll(); } }