消息报警推送优化.

pull/140/head
chen.ma 4 years ago
parent 44f3d2ccbd
commit c2da994e31

@ -50,7 +50,8 @@ public class BaseSendMessageServiceImpl implements HippoSendMessageService, Comm
return; return;
} }
if (isSendAlarm(each.getThreadPoolId(), each.setTypeEnum(typeEnum))) { if (isSendAlarm(each.getThreadPoolId(), each.getPlatform(), typeEnum)) {
alarmNotifyRequest.setNotifyTypeEnum(typeEnum);
messageHandler.sendAlarmMessage(each, alarmNotifyRequest); messageHandler.sendAlarmMessage(each, alarmNotifyRequest);
} }
} catch (Exception ex) { } catch (Exception ex) {
@ -88,14 +89,15 @@ public class BaseSendMessageServiceImpl implements HippoSendMessageService, Comm
* Is send alarm. * Is send alarm.
* *
* @param threadPoolId * @param threadPoolId
* @param notifyInfo * @param platform
* @param typeEnum
* @return * @return
*/ */
private boolean isSendAlarm(String threadPoolId, NotifyConfigDTO notifyInfo) { private boolean isSendAlarm(String threadPoolId, String platform, NotifyTypeEnum typeEnum) {
AlarmControlDTO alarmControl = AlarmControlDTO.builder() AlarmControlDTO alarmControl = AlarmControlDTO.builder()
.threadPool(threadPoolId) .threadPool(threadPoolId)
.platform(notifyInfo.getPlatform()) .platform(platform)
.typeEnum(notifyInfo.getTypeEnum()) .typeEnum(typeEnum)
.build(); .build();
return alarmControlHandler.isSendAlarm(alarmControl); return alarmControlHandler.isSendAlarm(alarmControl);

@ -40,7 +40,7 @@ public class DingSendMessageHandler implements SendMessageHandler<AlarmNotifyReq
String dingAlarmTxt; String dingAlarmTxt;
String dingAlarmTimoutReplaceTxt; String dingAlarmTimoutReplaceTxt;
if (Objects.equals(notifyConfig.getTypeEnum(), NotifyTypeEnum.TIMEOUT)) { if (Objects.equals(alarmNotifyRequest.getNotifyTypeEnum(), NotifyTypeEnum.TIMEOUT)) {
String executeTimeoutTrace = alarmNotifyRequest.getExecuteTimeoutTrace(); String executeTimeoutTrace = alarmNotifyRequest.getExecuteTimeoutTrace();
if (StringUtil.isNotBlank(executeTimeoutTrace)) { if (StringUtil.isNotBlank(executeTimeoutTrace)) {
String dingAlarmTimoutTraceReplaceTxt = String.format(DING_ALARM_TIMOUT_TRACE_REPLACE_TXT, executeTimeoutTrace); String dingAlarmTimoutTraceReplaceTxt = String.format(DING_ALARM_TIMOUT_TRACE_REPLACE_TXT, executeTimeoutTrace);
@ -61,7 +61,7 @@ public class DingSendMessageHandler implements SendMessageHandler<AlarmNotifyReq
// 环境 // 环境
alarmNotifyRequest.getActive(), alarmNotifyRequest.getActive(),
// 报警类型 // 报警类型
notifyConfig.getTypeEnum(), alarmNotifyRequest.getNotifyTypeEnum(),
// 线程池ID // 线程池ID
alarmNotifyRequest.getThreadPoolId(), alarmNotifyRequest.getThreadPoolId(),
// 应用名称 // 应用名称

@ -42,7 +42,7 @@ public class LarkSendMessageHandler implements SendMessageHandler<AlarmNotifyReq
String larkAlarmTxt; String larkAlarmTxt;
String larkAlarmTimoutReplaceTxt; String larkAlarmTimoutReplaceTxt;
if (Objects.equals(notifyConfig.getTypeEnum(), NotifyTypeEnum.TIMEOUT)) { if (Objects.equals(alarmNotifyRequest.getNotifyTypeEnum(), NotifyTypeEnum.TIMEOUT)) {
String executeTimeoutTrace = alarmNotifyRequest.getExecuteTimeoutTrace(); String executeTimeoutTrace = alarmNotifyRequest.getExecuteTimeoutTrace();
if (StringUtil.isNotBlank(executeTimeoutTrace)) { if (StringUtil.isNotBlank(executeTimeoutTrace)) {
String larkAlarmTimoutTraceReplaceTxt = String.format(LARK_ALARM_TIMOUT_TRACE_REPLACE_TXT, executeTimeoutTrace); String larkAlarmTimoutTraceReplaceTxt = String.format(LARK_ALARM_TIMOUT_TRACE_REPLACE_TXT, executeTimeoutTrace);
@ -61,7 +61,7 @@ public class LarkSendMessageHandler implements SendMessageHandler<AlarmNotifyReq
// 环境 // 环境
alarmNotifyRequest.getActive(), alarmNotifyRequest.getActive(),
// 报警类型 // 报警类型
notifyConfig.getTypeEnum(), alarmNotifyRequest.getNotifyTypeEnum(),
// 线程池ID // 线程池ID
alarmNotifyRequest.getThreadPoolId(), alarmNotifyRequest.getThreadPoolId(),
// 应用名称 // 应用名称

@ -38,7 +38,7 @@ public class WeChatSendMessageHandler implements SendMessageHandler<AlarmNotifyR
String weChatAlarmTxt; String weChatAlarmTxt;
String weChatAlarmTimoutReplaceTxt; String weChatAlarmTimoutReplaceTxt;
if (Objects.equals(notifyConfig.getTypeEnum(), NotifyTypeEnum.TIMEOUT)) { if (Objects.equals(alarmNotifyRequest.getNotifyTypeEnum(), NotifyTypeEnum.TIMEOUT)) {
String executeTimeoutTrace = alarmNotifyRequest.getExecuteTimeoutTrace(); String executeTimeoutTrace = alarmNotifyRequest.getExecuteTimeoutTrace();
if (StringUtil.isNotBlank(executeTimeoutTrace)) { if (StringUtil.isNotBlank(executeTimeoutTrace)) {
String weChatAlarmTimoutTraceReplaceTxt = String.format(WE_CHAT_ALARM_TIMOUT_TRACE_REPLACE_TXT, executeTimeoutTrace); String weChatAlarmTimoutTraceReplaceTxt = String.format(WE_CHAT_ALARM_TIMOUT_TRACE_REPLACE_TXT, executeTimeoutTrace);
@ -58,7 +58,7 @@ public class WeChatSendMessageHandler implements SendMessageHandler<AlarmNotifyR
// 环境 // 环境
alarmNotifyRequest.getActive(), alarmNotifyRequest.getActive(),
// 报警类型 // 报警类型
notifyConfig.getTypeEnum(), alarmNotifyRequest.getNotifyTypeEnum(),
// 线程池ID // 线程池ID
alarmNotifyRequest.getThreadPoolId(), alarmNotifyRequest.getThreadPoolId(),
// 应用名称 // 应用名称

@ -1,25 +0,0 @@
package cn.hippo4j.common.toolkit;
import org.slf4j.MDC;
/**
* MD util.
*
* @author chen.ma
* @date 2022/3/3 08:30
*/
public class MDCUtil {
/**
* Get and remove.
*
* @param key
* @return
*/
public static String getAndRemove(String key) {
String val = MDC.get(key);
MDC.remove(key);
return val;
}
}

@ -5,7 +5,7 @@ import cn.hippo4j.common.notify.NotifyTypeEnum;
import cn.hippo4j.common.notify.ThreadPoolNotifyAlarm; import cn.hippo4j.common.notify.ThreadPoolNotifyAlarm;
import cn.hippo4j.common.notify.request.AlarmNotifyRequest; import cn.hippo4j.common.notify.request.AlarmNotifyRequest;
import cn.hippo4j.common.notify.request.ChangeParameterNotifyRequest; import cn.hippo4j.common.notify.request.ChangeParameterNotifyRequest;
import cn.hippo4j.common.toolkit.MDCUtil; import cn.hippo4j.core.toolkit.TraceContextUtil;
import cn.hippo4j.common.toolkit.StringUtil; import cn.hippo4j.common.toolkit.StringUtil;
import cn.hippo4j.core.executor.manage.GlobalNotifyAlarmManage; import cn.hippo4j.core.executor.manage.GlobalNotifyAlarmManage;
import cn.hippo4j.core.executor.manage.GlobalThreadPoolManage; import cn.hippo4j.core.executor.manage.GlobalThreadPoolManage;
@ -22,8 +22,6 @@ import org.springframework.boot.CommandLineRunner;
import java.util.List; import java.util.List;
import java.util.concurrent.*; import java.util.concurrent.*;
import static cn.hippo4j.common.constant.Constants.EXECUTE_TIMEOUT_TRACE;
/** /**
* Thread pool alarm notify. * Thread pool alarm notify.
* *
@ -168,15 +166,13 @@ public class ThreadPoolNotifyAlarmHandler implements Runnable, CommandLineRunner
alarmNotifyRequest.setThreadPoolId(threadPoolId); alarmNotifyRequest.setThreadPoolId(threadPoolId);
alarmNotifyRequest.setExecuteTime(executeTime); alarmNotifyRequest.setExecuteTime(executeTime);
alarmNotifyRequest.setExecuteTimeOut(executeTimeOut); alarmNotifyRequest.setExecuteTimeOut(executeTimeOut);
String executeTimeoutTrace = MDCUtil.getAndRemove(EXECUTE_TIMEOUT_TRACE);
Runnable task = () -> {
if (StringUtil.isNotBlank(executeTimeoutTrace)) {
alarmNotifyRequest.setExecuteTimeoutTrace(executeTimeoutTrace);
}
hippoSendMessageService.sendAlarmMessage(NotifyTypeEnum.TIMEOUT, alarmNotifyRequest); String executeTimeoutTrace = TraceContextUtil.getAndRemove();
}; if (StringUtil.isNotBlank(executeTimeoutTrace)) {
alarmNotifyRequest.setExecuteTimeoutTrace(executeTimeoutTrace);
}
Runnable task = () -> hippoSendMessageService.sendAlarmMessage(NotifyTypeEnum.TIMEOUT, alarmNotifyRequest);
EXECUTE_TIMEOUT_EXECUTOR.execute(task); EXECUTE_TIMEOUT_EXECUTOR.execute(task);
} catch (Throwable ex) { } catch (Throwable ex) {
log.error("Send thread pool execution timeout alarm error.", ex); log.error("Send thread pool execution timeout alarm error.", ex);

@ -0,0 +1,40 @@
package cn.hippo4j.core.toolkit;
import org.slf4j.MDC;
import static cn.hippo4j.common.constant.Constants.EXECUTE_TIMEOUT_TRACE;
/**
* MD util.
*
* @author chen.ma
* @date 2022/3/3 08:30
*/
public class TraceContextUtil {
/**
* Execute timeout trace key.
*/
private static String EXECUTE_TIMEOUT_TRACE_KEY = EXECUTE_TIMEOUT_TRACE;
/**
* Get and remove.
*
* @return
*/
public static String getAndRemove() {
String val = MDC.get(EXECUTE_TIMEOUT_TRACE_KEY);
MDC.remove(EXECUTE_TIMEOUT_TRACE_KEY);
return val;
}
/**
* Set execute timeout trace key.
*
* @param key
*/
public static void setExecuteTimeoutTraceKey(String key) {
EXECUTE_TIMEOUT_TRACE_KEY = key;
}
}
Loading…
Cancel
Save