消息报警推送优化.

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

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

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

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

@ -38,7 +38,7 @@ public class WeChatSendMessageHandler implements SendMessageHandler<AlarmNotifyR
String weChatAlarmTxt;
String weChatAlarmTimoutReplaceTxt;
if (Objects.equals(notifyConfig.getTypeEnum(), NotifyTypeEnum.TIMEOUT)) {
if (Objects.equals(alarmNotifyRequest.getNotifyTypeEnum(), NotifyTypeEnum.TIMEOUT)) {
String executeTimeoutTrace = alarmNotifyRequest.getExecuteTimeoutTrace();
if (StringUtil.isNotBlank(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(),
// 报警类型
notifyConfig.getTypeEnum(),
alarmNotifyRequest.getNotifyTypeEnum(),
// 线程池ID
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.request.AlarmNotifyRequest;
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.core.executor.manage.GlobalNotifyAlarmManage;
import cn.hippo4j.core.executor.manage.GlobalThreadPoolManage;
@ -22,8 +22,6 @@ import org.springframework.boot.CommandLineRunner;
import java.util.List;
import java.util.concurrent.*;
import static cn.hippo4j.common.constant.Constants.EXECUTE_TIMEOUT_TRACE;
/**
* Thread pool alarm notify.
*
@ -168,15 +166,13 @@ public class ThreadPoolNotifyAlarmHandler implements Runnable, CommandLineRunner
alarmNotifyRequest.setThreadPoolId(threadPoolId);
alarmNotifyRequest.setExecuteTime(executeTime);
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);
} catch (Throwable 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