背景
- 有一些springboot项目涉及到较多的定时任务,使用XXL-JOB系统来进行管理,其默认实现通过邮件进行告警。
- 我们可以通过自定义的告警类来实现其它渠道的告警。
自定义告警
- 在包com.xxl.job.admin.core.alarm.impl下新建告警类继承JobAlarm类并重写doAlarm方法,在此方法中编写自定义告警逻辑。
- 自定义告警代码如下:
- 告警样例:
告警流程源码运行流程
-
XxlJobAdminConfig继承了InitializingBean, DisposableBean在springboot其中过程会调用XxlJobAdminConfig的init方法,此方法作为整个xxl job admin的入口方法,运行着众多的后台线程。
- init方法中启动守护线程用于监控运行失败的job。
- 查找失败任务并告警的流程:
- (1)查询运行失败的任务
- (2)调用告警媒介接口类JobAlarmer的alarm方法
- 告警流程:
- JobAlarmer同样继承了ApplicationContextAware, InitializingBean那么在springboot启动的时候会代用(2)中的afterPropertiesSet方法。
- afterPropertiesSet中通过getBeansOfType获取到JobAlarm类的全部实现类,封装到jobAlarmList数组中。
- 对jobAlarmList进行遍历,并分别调用各个实现的doAlarm方法即可完成多渠道的告警上报。