JAVA全系列 教程
3762个小节阅读:7094.1k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
缺点:
实际项目中,我们不会一直看着告警菜单。希望有告警信息产生时,将告警信息通过邮件或者短信发送给相关负责人。
xxxxxxxxxx
<!--钉钉工具包-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibaba-dingtalk-service-sdk</artifactId>
<version>2.0.0</version>
</dependency>
xxxxxxxxxx
server:
port: 9090
dingding:
#地址
webhook: https://oapi.dingtalk.com/robot/send?access_token=7915a428336dd933247d019420032bb72e920f459920cc581c42c61d46da7e46
#密钥
secret: SECa38500986415fc1404ad36415d8846f432db49936f9fb7f4d0ab5260e69ca82e
xxxxxxxxxx
@Slf4j
@RestController
@RequestMapping("alarm")
public class AlarmController {
@Value("${dingding.webhook}")
private String webhook;
@Value("${dingding.secret}")
private String secret;
/**
* 钉钉机器人通知
* @param alarmMessageList
*/
@PostMapping("pushData")
public void alarm(@RequestBody List<AlarmMessageDto> alarmMessageList) {
log.info("alarmMessage:{}", alarmMessageList.toString());
alarmMessageList.forEach(info -> {
try {
// 当前时间戳
Long timestamp = System.currentTimeMillis();
String stringToSign = timestamp + "\n" + secret;
/**
* Mac算法是带有密钥的消息摘要算法
* 初始化HmacMD5摘要算法的密钥产生器
*/
Mac mac = Mac.getInstance("HmacSHA256");
// 初始化mac
mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
// 执行消息摘要
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
// 拼接签名
String sign = "×tamp=" + timestamp + "&sign=" + URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
// 构建钉钉发送客户端工具
DingTalkClient client = new DefaultDingTalkClient(webhook + sign);
// 设置消息类型
OapiRobotSendRequest request = new OapiRobotSendRequest();
request.setMsgtype("text");
// 设置告警信息
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent("业务告警:\n" + info.getAlarmMessage());
request.setText(text);
// 接受人
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
at.setAtMobiles(Arrays.asList("所有人"));
request.setAt(at);
OapiRobotSendResponse response = client.execute(request);
} catch (Exception e) {
e.printStackTrace();
}
});
}
}