From 54c4558c1725ade294b263e9d996993ab6553b30 Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Sat, 14 Jan 2023 20:48:27 +0800 Subject: [PATCH] =?UTF-8?q?0.0.4.1=20=E4=B8=8A=E6=8A=A5=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=91=8A=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/core/report/ReportListener.java | 48 +++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/x-retry-client-core/src/main/java/com/x/retry/client/core/report/ReportListener.java b/x-retry-client-core/src/main/java/com/x/retry/client/core/report/ReportListener.java index 2670692f..f424f0e8 100644 --- a/x-retry-client-core/src/main/java/com/x/retry/client/core/report/ReportListener.java +++ b/x-retry-client-core/src/main/java/com/x/retry/client/core/report/ReportListener.java @@ -4,21 +4,31 @@ import com.github.rholder.retry.*; import com.google.common.base.Predicate; import com.x.retry.client.core.RetryExecutor; import com.x.retry.client.core.RetryExecutorParameter; +import com.x.retry.client.core.cache.GroupVersionCache; import com.x.retry.client.core.client.NettyHttpConnectClient; import com.x.retry.client.core.client.request.ReportRetryInfoHttpRequestHandler; import com.x.retry.client.core.client.request.RequestParam; -import com.x.retry.client.core.config.XRetryProperties; -import com.x.retry.common.core.model.XRetryRequest; import com.x.retry.client.core.client.response.XRetryResponse; +import com.x.retry.client.core.config.XRetryProperties; import com.x.retry.client.core.executor.GuavaRetryExecutor; +import com.x.retry.common.core.alarm.Alarm; +import com.x.retry.common.core.alarm.AlarmContext; +import com.x.retry.common.core.alarm.AltinAlarmFactory; import com.x.retry.common.core.context.SpringContext; +import com.x.retry.common.core.enums.NotifySceneEnum; import com.x.retry.common.core.log.LogUtils; +import com.x.retry.common.core.model.XRetryRequest; +import com.x.retry.common.core.util.EnvironmentUtils; import com.x.retry.common.core.util.JsonUtil; import com.x.retry.common.core.window.Listener; +import com.x.retry.server.model.dto.ConfigDTO; import com.x.retry.server.model.dto.RetryTaskDTO; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.concurrent.TimeUnit; /** @@ -26,6 +36,13 @@ import java.util.concurrent.TimeUnit; * @date : 2022-03-08 13:54 */ public class ReportListener implements Listener { + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + private static String reportErrorTextMessageFormatter = + "{}环境 上报失败 \r\n" + + "> 名称:{} \r\n" + + "> 时间:{} \r\n" + + "> 异常:{} \n" + ; @Override public void handler(List list) { @@ -43,11 +60,10 @@ public class ReportListener implements Listener { XRetryResponse.cache(xRetryRequest, requestHandler.callable()); NettyHttpConnectClient.send(requestHandler.method(), requestHandler.getHttpUrl(new RequestParam()), requestHandler.body(xRetryRequest)); - return null; }, throwable -> { LogUtils.info("上报重试后失败:{}", JsonUtil.toJsonString(list)); - // TODO 通知 + sendMessage(throwable); }, o -> LogUtils.info("上报重试成功:{}", JsonUtil.toJsonString(list))); } catch (Exception e) { e.printStackTrace(); @@ -91,4 +107,28 @@ public class ReportListener implements Listener { }; } + + private void sendMessage(Throwable e) { + + try { + ConfigDTO.Notify notifyAttribute = GroupVersionCache.getNotifyAttribute(NotifySceneEnum.CLIENT_REPORT_ERROR.getNotifyScene()); + if (Objects.nonNull(notifyAttribute)) { + AlarmContext context = AlarmContext.build() + .text(reportErrorTextMessageFormatter, + EnvironmentUtils.getActiveProfile(), + XRetryProperties.getGroup(), + LocalDateTime.now().format(formatter), + e.getMessage()) + .title("上报异常:[{}]", XRetryProperties.getGroup()) + .notifyAttribute(notifyAttribute.getNotifyAttribute()); + + AltinAlarmFactory altinAlarmFactory = SpringContext.getBeanByType(AltinAlarmFactory.class); + Alarm alarmType = altinAlarmFactory.getAlarmType(notifyAttribute.getNotifyType()); + alarmType.asyncSendMessage(context); + } + } catch (Exception e1) { + LogUtils.error("客户端发送组件异常告警失败", e1); + } + + } }