|
|
|
@ -1,7 +1,10 @@
|
|
|
|
|
package cn.hippo4j.starter.alarm;
|
|
|
|
|
package cn.hippo4j.starter.alarm.ding;
|
|
|
|
|
|
|
|
|
|
import cn.hippo4j.common.model.InstanceInfo;
|
|
|
|
|
import cn.hippo4j.common.model.PoolParameterInfo;
|
|
|
|
|
import cn.hippo4j.starter.alarm.NotifyDTO;
|
|
|
|
|
import cn.hippo4j.starter.alarm.NotifyPlatformEnum;
|
|
|
|
|
import cn.hippo4j.starter.alarm.SendMessageHandler;
|
|
|
|
|
import cn.hippo4j.starter.core.DynamicThreadPoolExecutor;
|
|
|
|
|
import cn.hippo4j.starter.core.GlobalThreadPoolManage;
|
|
|
|
|
import cn.hippo4j.starter.toolkit.thread.QueueTypeEnum;
|
|
|
|
@ -22,6 +25,9 @@ import java.util.concurrent.BlockingQueue;
|
|
|
|
|
import java.util.concurrent.ThreadPoolExecutor;
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
|
|
import static cn.hippo4j.starter.alarm.ding.DingAlarmConstants.DING_ALARM_TXT;
|
|
|
|
|
import static cn.hippo4j.starter.alarm.ding.DingAlarmConstants.DING_NOTICE_TXT;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Send ding notification message.
|
|
|
|
|
*
|
|
|
|
@ -57,32 +63,7 @@ public class DingSendMessageHandler implements SendMessageHandler {
|
|
|
|
|
|
|
|
|
|
BlockingQueue<Runnable> queue = pool.getQueue();
|
|
|
|
|
String text = String.format(
|
|
|
|
|
"<font color='#FF0000'>[警报] </font>%s - 动态线程池运行告警 \n\n" +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>线程池ID:%s</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>应用名称:%s</font> \n\n " +
|
|
|
|
|
"<font color='#778899' size=2>应用实例:%s</font> \n\n " +
|
|
|
|
|
"<font color='#778899' size=2>报警类型:%s</font> \n\n " +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>核心线程数:%d</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>最大线程数:%d</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>当前线程数:%d</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>活跃线程数:%d</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>最大任务数:%d</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>线程池任务总量:%d</font> \n\n " +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>队列类型:%s</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>队列容量:%d</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>队列元素个数:%d</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>队列剩余个数:%d</font> \n\n " +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>拒绝策略:%s</font> \n\n" +
|
|
|
|
|
"<font color='#708090' size=2>拒绝策略执行次数:</font><font color='#FF0000' size=2>%d</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>OWNER:@%s</font> \n\n" +
|
|
|
|
|
"<font color='#708090' size=2>提示:%d 分钟内此线程池不会重复告警(可配置)</font> \n\n" +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"**播报时间:%s**",
|
|
|
|
|
|
|
|
|
|
DING_ALARM_TXT,
|
|
|
|
|
// 环境
|
|
|
|
|
active.toUpperCase(),
|
|
|
|
|
// 线程池ID
|
|
|
|
@ -125,7 +106,7 @@ public class DingSendMessageHandler implements SendMessageHandler {
|
|
|
|
|
DateUtil.now()
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
execute(notifyConfig, "动态线程池告警", text, receives);
|
|
|
|
|
execute(notifyConfig, DingAlarmConstants.DING_ALARM_TITLE, text, receives);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void dingChangeSendMessage(NotifyDTO notifyConfig, PoolParameterInfo parameter) {
|
|
|
|
@ -144,26 +125,7 @@ public class DingSendMessageHandler implements SendMessageHandler {
|
|
|
|
|
* hesitant e.g. ➲ ➜ ⇨ ➪
|
|
|
|
|
*/
|
|
|
|
|
String text = String.format(
|
|
|
|
|
"<font color='#2a9d8f'>[通知] </font>%s - 动态线程池参数变更 \n\n" +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>线程池ID:%s</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>应用名称:%s</font> \n\n " +
|
|
|
|
|
"<font color='#778899' size=2>应用实例:%s</font> \n\n " +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>核心线程数:%s</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>最大线程数:%s</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>线程存活时间:%s / SECONDS</font> \n\n" +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>队列类型:%s</font> \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>队列容量:%s</font> \n\n " +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>AGO 拒绝策略:%s</font> \n\n" +
|
|
|
|
|
"<font color='#708090' size=2>NOW 拒绝策略:%s</font> \n\n" +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"<font color='#708090' size=2>提示:动态线程池配置变更实时通知(无限制)</font> \n\n" +
|
|
|
|
|
"<font color='#708090' size=2>OWNER:@%s</font> \n\n" +
|
|
|
|
|
" --- \n\n " +
|
|
|
|
|
"**播报时间:%s**",
|
|
|
|
|
DING_NOTICE_TXT,
|
|
|
|
|
// 环境
|
|
|
|
|
active.toUpperCase(),
|
|
|
|
|
// 线程池名称
|
|
|
|
@ -191,12 +153,11 @@ public class DingSendMessageHandler implements SendMessageHandler {
|
|
|
|
|
DateUtil.now()
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
execute(notifyConfig, "动态线程池通知", text, receives);
|
|
|
|
|
execute(notifyConfig, DingAlarmConstants.DING_NOTICE_TITLE, text, receives);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void execute(NotifyDTO notifyConfig, String title, String text, List<String> mobiles) {
|
|
|
|
|
String url = "https://oapi.dingtalk.com/robot/send?access_token=";
|
|
|
|
|
String serverUrl = url + notifyConfig.getSecretKey();
|
|
|
|
|
String serverUrl = DingAlarmConstants.DING_ROBOT_SERVER_URL + notifyConfig.getSecretKey();
|
|
|
|
|
DingTalkClient dingTalkClient = new DefaultDingTalkClient(serverUrl);
|
|
|
|
|
OapiRobotSendRequest request = new OapiRobotSendRequest();
|
|
|
|
|
request.setMsgtype("markdown");
|