上报失败添加告警
This commit is contained in:
byteblogs168 2023-01-14 20:48:27 +08:00
parent 054bef4a8b
commit 54c4558c17

View File

@ -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<RetryTaskDTO> {
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private static String reportErrorTextMessageFormatter =
"<font face=\"微软雅黑\" color=#ff0000 size=4>{}环境 上报失败</font> \r\n" +
"> 名称:{} \r\n" +
"> 时间:{} \r\n" +
"> 异常:{} \n"
;
@Override
public void handler(List<RetryTaskDTO> list) {
@ -43,11 +60,10 @@ public class ReportListener implements Listener<RetryTaskDTO> {
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<RetryTaskDTO> {
};
}
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<AlarmContext> alarmType = altinAlarmFactory.getAlarmType(notifyAttribute.getNotifyType());
alarmType.asyncSendMessage(context);
}
} catch (Exception e1) {
LogUtils.error("客户端发送组件异常告警失败", e1);
}
}
}