2021SC@SDUSC

DophinScheduler Alert模块代码分析

Alert服务入口

创建AlertServer 实例对象,调用start方法,启动

public static void main(String[] args) {AlertServer alertServer = AlertServer.getInstance();alertServer.start();}

start方法

  1. 改方通过while(true)循环方式,循环条件通过Stopper.isRunning()判断为TRUE或者FALSE,来实现循环
  2. Thread.sleep 循环体内通过线程每5秒启动一次
  3. 每次启动通过 alertDao.listWaitExecutionAlert()执行具体逻辑
 public void start() {logger.info("alert server ready start ");while (Stopper.isRunning()) {  //5秒循环try {Thread.sleep(Constants.ALERT_SCAN_INTERVAL); // 5000 ms} catch (InterruptedException e) {logger.error(e.getMessage(), e);Thread.currentThread().interrupt();}List<Alert> alerts = alertDao.listWaitExecutionAlert();  // 扫描数据库中表 t_ds_alert 中 alert_status 字段为0等待发送,1成功,2失败 判断是否有需要发送的邮件 如果有alertSender = new AlertSender(alerts, alertDao, alertPluginManager);alertSender.run();}}

listWaitExecutionAlert方法

  1. listWaitExecutionAlert方法逻辑功能为通过定时
  2. 到dolphinscheduler配置数据库中执行如下sql
  3. t_ds_alert可以理解成告警信息相关表,在表中查找状态为等待发送的数据
List<Alert> alerts = alertDao.listWaitExecutionAlert();//调用
public List<Alert> listWaitExecutionAlert(){return alertMapper.listAlertByStatus(AlertStatus.WAIT_EXECUTION);}//调用
List<Alert> listAlertByStatus(@Param("alertStatus") AlertStatus alertStatus);//底层执行sql为
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="org.apache.dolphinscheduler.dao.mapper.AlertMapper"><select id="listAlertByStatus" resultType="org.apache.dolphinscheduler.dao.entity.Alert">select *from t_ds_alertwhere alert_status = #{alertStatus}</select>
</mapper>

 alertSender.run()方法

1.alertDao.listWaitExecutionAlert()方法会定时扫描出需要发送的数据,数据会逐条进行分析、发送
2.alertDao.listUserByAlertgroupId(alert.getAlertGroupId())方法通过 t_ds_alert 表 alertgroup_id 去t_ds_user表中查找相应用户的email,即任务运行配置告警通知分组的用户获取email、与收件人的email

for (Alert alert : alertList) {
.......
}public List<User> listUserByAlertgroupId(int alertgroupId){return userAlertGroupMapper.listUserByAlertgroupId(alertgroupId);
}

emailPlugin.process(alertInfo)

  1. 处理类
  2. 判断收件人、告警组、抄送人的邮箱是否为空
  3. 满足条件,调用emailManager.send方法

emailManager.send

public Map<String,Object> send(List<String> receviersList,List<String> receviersCcList,String title,String content,String showType){return MailUtils.sendMails(receviersList, receviersCcList, title, content, showType);}

DolphinScheduler技术分析(八)相关推荐

  1. DolphinScheduler技术分析(十)

     2021SC@SDUSC 这篇分析一下十分重要的workserver类 首先 stop方法 首先调用Stopper.stop设置全局变量.停止所有线程的"死"循环,然后休眠3秒, ...

  2. YOLOV4各个创新功能模块技术分析(三)

    YOLOV4各个创新功能模块技术分析(三) 八.数据增强相关-Stylized-ImageNet 论文名称:ImageNet-trained cnns are biased towards textu ...

  3. web报表开发技术专题八:总结

    以前上博客园时,我是最怕看到一二三四之类的系列文章的,没想自己也这样做了.实在是因为无法在一篇文章之中讲清如此多的东西,现在写了这些有关web报表开发的文章之后,还是觉得有很多方面没有涉及,基本上只是 ...

  4. 技术分析在于少而精,多则惑

    虽然是炒股心得,其实我很早就没有心得可谈了,能不断获得心得的时期是炒股的初级阶段,越往后你就越知道,股市就这么回事,哪有这么多心得可言. 但是我可以站在今天这个角度为大家梳理我从前的心得,哪些是炒股的 ...

  5. 投资入门第 3 步:技术分析法(常用技术分析)

    1.OX图 1.绘制方法 OX图不是坐标表现价格的变化,而是通过小方格来表现价格的变化,其主要内容如下: ×=价格上升,O=价格下降.方格中的数字表示月份,图左边的数字表示单位价格. (1)当每次股票 ...

  6. 股票技术分析--任正德主编

    股票技术分析:散户完全自救手册–任正德主编 第二章 K线分析 2.1 K线的含义及画法 K线画法和含义(日K线) 当日开盘价(a)与当日收盘价(b)组成的区域叫K线实体,若a<b,则称此K线为阳 ...

  7. 【恒指早盘分析】盘点技术分析的三个误区

    技术分析是上乘武功,练的人虽多,但能掌握个八九成的凤毛麟角.许多人学了个一招半式,常以技术派自居,但未得技术分析精髓,甚至走火入魔.自己亏了不说,若是因此误导了新手,或是给外人留下技术分析不是好武功的 ...

  8. 阿里IM技术分享(八):深度解密钉钉即时消息服务DTIM的技术设计

    本文引用自InfoQ社区"5亿用户如何高效沟通?钉钉首次对外揭秘即时消息服务DTIM"一文,作者陈万红等.策划褚杏娟,有修订和改动. 一.引言 本文是国内企业IM的事实王者钉钉首次 ...

  9. TOF与结构光技术分析

    TOF与结构光技术分析 一.概述 结构光(Structuredlight),通常采用特定波长的不可见的激光作为光源,它发射出来的光带有编码信息,投射在物体上,通过一定算法来计算返回的编码图案的畸变来得 ...

最新文章

  1. 卡牌系统psv游戏推荐_索尼PSV已经凉了吗?等等,2020年六月还有一款PSV游戏发售...
  2. 3.7 为什么需要非线性激活函数-深度学习-Stanford吴恩达教授
  3. Jumping Jack
  4. 阿里云开发者大会:资源加应用酝酿云存储变局
  5. Linux 内核定时器实验————复习到这
  6. CD Linux U盘启动办法
  7. JSF 源代码赏析之Lifecycle
  8. Mysql datadir change on ubuntu
  9. libeio-异步I/O库初窥
  10. 明星AI芯片公司Graphcore获红杉5000万美元投资
  11. 机器学习代码实战——网格搜索和交叉验证(GridSearchCV)
  12. CC2530基础实验二 外部中断实验
  13. 系统集成项目管理师和高级项目管理师考试心得
  14. 最全面贴片电阻知识,封装、尺寸、最大承受功率及选型统统包括-电子技术方案|电路图讲解
  15. 分卷压缩 C#代码实现
  16. 生命主题dreamweaver作业静态HTML网页设计——卫生与健康 6页 带视频
  17. (八)苏世民:我的经验和教训:决策(567)
  18. AWS免费账号取消步骤
  19. echarts 环形图 不同区域背景色自定义
  20. 基于SVM算法的人脸表情识别

热门文章

  1. WorkFlow建立
  2. 微信最多人用的表情是它!朋友圈国内外最多人打卡的地方是这两个城市!
  3. tf.Variable() 和 tf.get_variable(),tf.name_scope() 和 tf.variable_scope()
  4. 【YOLOv5】yolov5训练中遇到的问题解决:BrokenPipeError: [Errno 32] Broken pipe
  5. UIImageJPEGRepresentation缓存导致圆图变方图
  6. (创建型)设计模式——工厂模式(factory)
  7. 动态壁纸安卓_梦象动态壁纸下载
  8. 西门子SMART200 通过Modbus 读取温湿度传感器数据实例
  9. 思维导图02----Java面向对象
  10. H3C交换机SSH登录配置