From e74f0ca6f8af892b707f1504cfd1913461191885 Mon Sep 17 00:00:00 2001
From: AprilWind <2100166581@qq.com>
Date: 星期四, 25 七月 2024 10:37:27 +0800
Subject: [PATCH] update 优化Monitor监控服务信息事件通知

---
 ruoyi-extend/ruoyi-monitor-admin/pom.xml                                                              |    5 +
 ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/notifier/InfoNotifier.java   |   34 +++++++++++
 ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/event/NotifierEvent.java     |   44 ++++++++++++++
 ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/notifier/CustomNotifier.java |   56 ++++++------------
 4 files changed, 101 insertions(+), 38 deletions(-)

diff --git a/ruoyi-extend/ruoyi-monitor-admin/pom.xml b/ruoyi-extend/ruoyi-monitor-admin/pom.xml
index 91194c6..0ed2d29 100644
--- a/ruoyi-extend/ruoyi-monitor-admin/pom.xml
+++ b/ruoyi-extend/ruoyi-monitor-admin/pom.xml
@@ -39,6 +39,11 @@
             <artifactId>lombok</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-core</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/event/NotifierEvent.java b/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/event/NotifierEvent.java
new file mode 100644
index 0000000..7df53e4
--- /dev/null
+++ b/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/event/NotifierEvent.java
@@ -0,0 +1,44 @@
+package org.dromara.monitor.admin.event;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 閫氱煡浜嬩欢
+ *
+ * @author AprilWind
+ */
+@Data
+public class NotifierEvent implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 瀹炰緥娉ㄥ唽鍚嶇О
+     */
+    private String registName;
+
+    /**
+     * 瀹炰緥鐘舵�佸悕绉�
+     */
+    private String statusName;
+
+    /**
+     * 瀹炰緥ID
+     */
+    private String instanceId;
+
+    /**
+     * 瀹炰緥鐘舵��
+     */
+    private String status;
+
+    /**
+     * 鏈嶅姟URL
+     */
+    private String serviceUrl;
+
+}
diff --git a/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/notifier/CustomNotifier.java b/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/notifier/CustomNotifier.java
index 0094f72..e2b5294 100644
--- a/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/notifier/CustomNotifier.java
+++ b/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/notifier/CustomNotifier.java
@@ -6,6 +6,8 @@
 import de.codecentric.boot.admin.server.domain.events.InstanceStatusChangedEvent;
 import de.codecentric.boot.admin.server.notify.AbstractEventNotifier;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.monitor.admin.event.NotifierEvent;
 import org.springframework.stereotype.Component;
 import reactor.core.publisher.Mono;
 
@@ -38,46 +40,24 @@
                 String status = ((InstanceStatusChangedEvent) event).getStatusInfo().getStatus();
                 // 鑾峰彇鏈嶅姟URL
                 String serviceUrl = instance.getRegistration().getServiceUrl();
-                String statusName = null;
-
-                // 鏍规嵁瀹炰緥鐘舵�佹墽琛岀浉搴旂殑鎿嶄綔
-                switch (status) {
-                    // 鏈嶅姟涓婄嚎锛堝疄渚嬫垚鍔熷惎鍔ㄥ苟鍙互姝e父澶勭悊璇锋眰锛�
-                    case STATUS_UP:
-                        statusName = "鏈嶅姟涓婄嚎";
-                        break;
-
-                    // 鏈嶅姟绂荤嚎锛堝疄渚嬭鎵嬪姩鎴栬嚜鍔ㄥ湴浠庢湇鍔′腑绉婚櫎锛�
-                    case STATUS_OFFLINE:
-                        statusName = "鏈嶅姟绂荤嚎";
-                        break;
-
-                    // 鏈嶅姟鍙楅檺锛堣〃绀哄疄渚嬪湪鏌愪簺鏂归潰鍙楅檺锛屽彲鑳芥棤娉曞畬鍏ㄦ彁渚涙墍鏈夋湇鍔★級
-                    case STATUS_RESTRICTED:
-                        statusName = "鏈嶅姟鍙楅檺";
-                        break;
-
-                    // 鍋滄鏈嶅姟鐘舵�侊紙琛ㄧず瀹炰緥宸茶鏍囪涓哄仠姝㈡彁渚涙湇鍔★紝鍙兘鏄鍒掑唴缁存姢鎴栨祴璇曪級
-                    case STATUS_OUT_OF_SERVICE:
-                        statusName = "鍋滄鏈嶅姟鐘舵��";
-                        break;
-
-                    // 鏈嶅姟涓嬬嚎锛堝疄渚嬪洜宕╂簝銆侀敊璇垨鍏朵粬鍘熷洜鍋滄杩愯锛�
-                    case STATUS_DOWN:
-                        statusName = "鏈嶅姟涓嬬嚎";
-                        break;
-
-                    // 鏈嶅姟鏈煡寮傚父锛堢洃鎺х郴缁熸棤娉曠‘瀹氬疄渚嬬殑褰撳墠鐘舵�侊級
-                    case STATUS_UNKNOWN:
-                        statusName = "鏈嶅姟鏈煡寮傚父";
-                        break;
-
-                    // 榛樿鎯呭喌锛堟病鏈夊尮閰嶇殑鐘舵�侊級
-                    default:
-                        break;
-                }
+                String statusName = switch (status) {
+                    case STATUS_UP -> "鏈嶅姟涓婄嚎"; // 瀹炰緥鎴愬姛鍚姩骞跺彲浠ユ甯稿鐞嗚姹�
+                    case STATUS_OFFLINE -> "鏈嶅姟绂荤嚎"; //瀹炰緥琚墜鍔ㄦ垨鑷姩鍦颁粠鏈嶅姟涓Щ闄�
+                    case STATUS_RESTRICTED -> "鏈嶅姟鍙楅檺"; //琛ㄧず瀹炰緥鍦ㄦ煇浜涙柟闈㈠彈闄愶紝鍙兘鏃犳硶瀹屽叏鎻愪緵鎵�鏈夋湇鍔�
+                    case STATUS_OUT_OF_SERVICE -> "鍋滄鏈嶅姟鐘舵��"; //琛ㄧず瀹炰緥宸茶鏍囪涓哄仠姝㈡彁渚涙湇鍔★紝鍙兘鏄鍒掑唴缁存姢鎴栨祴璇�
+                    case STATUS_DOWN -> "鏈嶅姟涓嬬嚎"; //瀹炰緥鍥犲穿婧冦�侀敊璇垨鍏朵粬鍘熷洜鍋滄杩愯
+                    case STATUS_UNKNOWN -> "鏈嶅姟鏈煡寮傚父"; //鐩戞帶绯荤粺鏃犳硶纭畾瀹炰緥鐨勫綋鍓嶇姸鎬�
+                    default -> "鏈煡鐘舵��"; //娌℃湁鍖归厤鐨勭姸鎬�
+                };
                 log.info("Instance Status Change: 鐘舵�佸悕绉般�恵}銆�, 娉ㄥ唽鍚嶇О銆恵}銆�, 瀹炰緥ID銆恵}銆�, 鐘舵�併�恵}銆�, 鏈嶅姟URL銆恵}銆�",
                     statusName, registName, instanceId, status, serviceUrl);
+                NotifierEvent notifier = new NotifierEvent();
+                notifier.setRegistName(registName);
+                notifier.setStatusName(statusName);
+                notifier.setInstanceId(instanceId);
+                notifier.setStatus(status);
+                notifier.setServiceUrl(serviceUrl);
+                SpringUtils.context().publishEvent(notifier);
             }
         });
     }
diff --git a/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/notifier/InfoNotifier.java b/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/notifier/InfoNotifier.java
new file mode 100644
index 0000000..455883e
--- /dev/null
+++ b/ruoyi-extend/ruoyi-monitor-admin/src/main/java/org/dromara/monitor/admin/notifier/InfoNotifier.java
@@ -0,0 +1,34 @@
+package org.dromara.monitor.admin.notifier;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.monitor.admin.event.NotifierEvent;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+/**
+ * 淇℃伅閫氱煡
+ *
+ * @author AprilWind
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Service
+public class InfoNotifier {
+
+    /**
+     * 寮傛澶勭悊閫氱煡浜嬩欢鐨勬柟娉�
+     * <p>
+     * 璇ユ柟娉曚細澶勭悊 `NotifierEvent` 浜嬩欢锛屾墽琛岄�氱煡鐩稿叧鐨勬搷浣滐紝濡傚彂閫侀偖浠舵垨鐭俊
+     *
+     * @param notifier 浜嬩欢瀵硅薄锛屽寘鍚簡闇�瑕侀�氱煡鐨勮缁嗕俊鎭紝鍖呮嫭娉ㄥ唽鍚嶇О銆佺姸鎬佸悕绉般�佸疄渚� ID銆佺姸鎬佸拰鏈嶅姟 URL
+     */
+    @Async
+    @EventListener
+    public void infoNotification(NotifierEvent notifier) {
+        // 鍦ㄨ繖閲屾坊鍔犲鐞嗛�氱煡浜嬩欢鐨勯�昏緫
+        // 渚嬪锛屼緷鎹� notifier 瀵硅薄鐨勪俊鎭彂閫侀偖浠舵垨鐭俊閫氱煡
+    }
+
+}

--
Gitblit v1.9.3