From a99b8107e09472086fd7dfc146242f0df2e32432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Wed, 15 Jun 2022 11:44:10 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20nacos=20=E4=B8=8E=20?= =?UTF-8?q?undertow=20=E6=95=B4=E5=90=88=E4=BD=BF=E7=94=A8=20=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E5=BA=94=E7=94=A8=E6=97=B6=E6=8A=A5=E9=94=99=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/ruoyi-common-web/pom.xml | 6 +++ .../ruoyi/common/web/config/NacosConfig.java | 38 +++++++++++++++++++ .../common/web/nacos/CustomNacosWatch.java | 25 ++++++++++++ .../main/resources/META-INF/spring.factories | 3 +- 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 ruoyi-common/ruoyi-common-web/src/main/java/com/ruoyi/common/web/config/NacosConfig.java create mode 100644 ruoyi-common/ruoyi-common-web/src/main/java/com/ruoyi/common/web/nacos/CustomNacosWatch.java diff --git a/ruoyi-common/ruoyi-common-web/pom.xml b/ruoyi-common/ruoyi-common-web/pom.xml index f1a60894..978a9a66 100644 --- a/ruoyi-common/ruoyi-common-web/pom.xml +++ b/ruoyi-common/ruoyi-common-web/pom.xml @@ -34,5 +34,11 @@ spring-boot-starter-undertow + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + true + + diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/com/ruoyi/common/web/config/NacosConfig.java b/ruoyi-common/ruoyi-common-web/src/main/java/com/ruoyi/common/web/config/NacosConfig.java new file mode 100644 index 00000000..67280d5e --- /dev/null +++ b/ruoyi-common/ruoyi-common-web/src/main/java/com/ruoyi/common/web/config/NacosConfig.java @@ -0,0 +1,38 @@ +package com.ruoyi.common.web.config; + +import com.alibaba.cloud.nacos.ConditionalOnNacosDiscoveryEnabled; +import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.NacosServiceManager; +import com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration; +import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; +import com.alibaba.cloud.nacos.discovery.NacosWatch; +import com.ruoyi.common.web.nacos.CustomNacosWatch; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.cloud.client.ConditionalOnBlockingDiscoveryEnabled; +import org.springframework.cloud.client.ConditionalOnDiscoveryEnabled; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 自定义 nacos 监听 解决与 Undertow 整合报错问题 + * + * @author Lion Li + */ +@Configuration(proxyBeanMethods = false) +@ConditionalOnDiscoveryEnabled +@ConditionalOnBlockingDiscoveryEnabled +@ConditionalOnNacosDiscoveryEnabled +@AutoConfigureBefore(NacosDiscoveryClientConfiguration.class) +@AutoConfigureAfter(NacosDiscoveryAutoConfiguration.class) +public class NacosConfig { + + @Bean + @ConditionalOnProperty(value = "spring.cloud.nacos.discovery.watch.enabled", matchIfMissing = true) + public NacosWatch nacosWatch(NacosServiceManager nacosServiceManager, + NacosDiscoveryProperties nacosDiscoveryProperties) { + return new CustomNacosWatch(nacosServiceManager, nacosDiscoveryProperties); + } + +} diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/com/ruoyi/common/web/nacos/CustomNacosWatch.java b/ruoyi-common/ruoyi-common-web/src/main/java/com/ruoyi/common/web/nacos/CustomNacosWatch.java new file mode 100644 index 00000000..8aacb509 --- /dev/null +++ b/ruoyi-common/ruoyi-common-web/src/main/java/com/ruoyi/common/web/nacos/CustomNacosWatch.java @@ -0,0 +1,25 @@ +package com.ruoyi.common.web.nacos; + +import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.NacosServiceManager; +import com.alibaba.cloud.nacos.discovery.NacosWatch; + +/** + * 自定义 nacos 监听 + * + * @author Lion Li + */ +public class CustomNacosWatch extends NacosWatch { + + public CustomNacosWatch(NacosServiceManager nacosServiceManager, NacosDiscoveryProperties properties) { + super(nacosServiceManager, properties); + } + + /** + * 重写解决与 Undertow 关闭顺序冲突导致报错问题 + */ + @Override + public int getPhase() { + return Integer.MAX_VALUE; + } +} diff --git a/ruoyi-common/ruoyi-common-web/src/main/resources/META-INF/spring.factories b/ruoyi-common/ruoyi-common-web/src/main/resources/META-INF/spring.factories index a6fc05d6..ad7224f2 100644 --- a/ruoyi-common/ruoyi-common-web/src/main/resources/META-INF/spring.factories +++ b/ruoyi-common/ruoyi-common-web/src/main/resources/META-INF/spring.factories @@ -1,3 +1,4 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.ruoyi.common.web.config.I18nConfig,\ - com.ruoyi.common.web.config.UndertowConfig + com.ruoyi.common.web.config.UndertowConfig,\ + com.ruoyi.common.web.config.NacosConfig