From 5370d7785c0d65fc8a9588fda426c74a5e7aaa33 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: Sun, 17 Mar 2024 23:28:52 +0800 Subject: [PATCH] =?UTF-8?q?update=20easy-retry=203.1.0=20=3D>=203.1.1=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97=E8=87=AA=E5=8A=A8=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E9=85=8D=E7=BD=AE=E4=B8=8Enacos=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8F=91=E7=8E=B0server=E6=9C=8D=E5=8A=A1=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E9=87=8D=E8=AF=95=E8=BF=9E=E6=8E=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/nacos/ruoyi-job.yml | 3 + pom.xml | 2 +- .../common/job/config/EasyRetryConfig.java | 59 +++++++++++++++++++ .../properties/EasyRetryServerProperties.java | 14 +++++ 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/properties/EasyRetryServerProperties.java diff --git a/config/nacos/ruoyi-job.yml b/config/nacos/ruoyi-job.yml index 33c68afe..2fbe8ab9 100644 --- a/config/nacos/ruoyi-job.yml +++ b/config/nacos/ruoyi-job.yml @@ -37,6 +37,9 @@ easy-retry: # 需要在EasyRetry后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 group-name: "ruoyi_group" server: + # 从 nacos 获取服务 + server-name: ruoyi-easyretry-server + # 服务名优先 ip垫底 host: 127.0.0.1 port: 1788 # 详见 script/sql/easy_retry.sql `namespace` 表 diff --git a/pom.xml b/pom.xml index 00191868..bff1e04f 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ 3.27.0 2.2.7 4.3.6 - 3.1.0 + 3.1.1 1.37.0 1.18.30 7.4 diff --git a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java index efce6efb..c60fb376 100644 --- a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java +++ b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java @@ -1,10 +1,27 @@ package org.dromara.common.job.config; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.spi.ILoggingEvent; +import cn.hutool.core.collection.CollUtil; +import com.aizuda.easy.retry.client.common.appender.EasyRetryLogbackAppender; +import com.aizuda.easy.retry.client.common.event.ChannelReconnectEvent; +import com.aizuda.easy.retry.client.common.event.EasyRetryStartingEvent; import com.aizuda.easy.retry.client.starter.EnableEasyRetry; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.job.config.properties.EasyRetryServerProperties; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.DiscoveryClient; +import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.EnableScheduling; +import java.util.List; + /** * 启动定时任务 * @@ -12,8 +29,50 @@ import org.springframework.scheduling.annotation.EnableScheduling; * @since 2024/3/12 */ @AutoConfiguration +@EnableConfigurationProperties(EasyRetryServerProperties.class) @ConditionalOnProperty(prefix = "easy-retry", name = "enabled", havingValue = "true") @EnableScheduling @EnableEasyRetry(group = "${easy-retry.group-name}") public class EasyRetryConfig { + + @Autowired + private EasyRetryServerProperties properties; + @Autowired + private DiscoveryClient discoveryClient; + + @EventListener(EasyRetryStartingEvent.class) + public void onStarting(EasyRetryStartingEvent event) { + // 从 nacos 获取 server 服务连接 + registerServer(); + // 注册 日志监控配置 + registerLogging(); + } + + @EventListener(ChannelReconnectEvent.class) + public void onReconnect(ChannelReconnectEvent event) { + // 连接中断 重新从 nacos 获取存活的服务连接(高可用配置) + registerServer(); + } + + private void registerServer() { + String serverName = properties.getServerName(); + if (StringUtils.isNotBlank(serverName)) { + List instances = discoveryClient.getInstances(serverName); + if (CollUtil.isNotEmpty(instances)) { + ServiceInstance instance = instances.get(0); + System.setProperty("easy-retry.server.host", instance.getHost()); + System.setProperty("easy-retry.server.port", properties.getPort()); + } + } + } + + private void registerLogging() { + LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); + EasyRetryLogbackAppender ca = new EasyRetryLogbackAppender<>(); + ca.setName("easy_log_appender"); + ca.start(); + Logger rootLogger = lc.getLogger(Logger.ROOT_LOGGER_NAME); + rootLogger.addAppender(ca); + } + } diff --git a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/properties/EasyRetryServerProperties.java b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/properties/EasyRetryServerProperties.java new file mode 100644 index 00000000..ebda92d6 --- /dev/null +++ b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/properties/EasyRetryServerProperties.java @@ -0,0 +1,14 @@ +package org.dromara.common.job.config.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +@Data +@ConfigurationProperties(prefix = "easy-retry.server") +public class EasyRetryServerProperties { + + private String serverName; + + private String port; + +}