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