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;
+
+}