栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

简单聊聊xxl-job自定义监控这件小事

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单聊聊xxl-job自定义监控这件小事

文章目录
    • 背景
    • 解决方式
      • 自定义AOP异常切面
      • AOP实现的缺点
      • 硬核修改源码

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党

背景

线上的xxl-job时常有定时任务执行失败,但是我们这边时常没有感知到,只有当业务方过来告诉我们的时候我们才能后知后觉,非常的不及时。所以希望xxl-job能有一个合适的监控方式。其实开源版本的xxl-job是有提供邮件报警的


但是遗憾的是团队的开发大多不会及时看邮件。我们更希望有像微信、钉钉、飞书这种直接群报警这种通知,所以就需要自己扩展了

解决方式

我们团队使用的主要还是飞书工具所以,想通过发送飞书消息来监控。

自定义AOP异常切面

这里最先想到的也是最简单的实现方式就是通过AOP去拦截注解XxlJob

这里我们自定义一个XxlJobHandlerMonitor

@Aspect
@Component
public class XxlJobHandlerMonitor {

    @Autowired
    FeishuRobot feishuRobot;


    @Pointcut("@annotation(com.xxl.job.core.handler.annotation.XxlJob)")
    public void cut() {
    }

    @AfterThrowing(pointcut = "cut() && @annotation(xxlJob)", throwing="e")
    public void around(Throwable e, XxlJob xxlJob) {
        String errorMessage = String.format("xxl-job任务执行失败,任务名: %s,错误信息: %s", xxlJob.value(), e.getMessage());
        feishuRobot.sendText(errorMessage, FeishuRobot.FeishuWebhookEnum.XXL_JOB);
    }
}

可以看到核心代码非常简单,短短几行就ok了。

FeishuRobot 是发送飞书通知的类
异常信息这里只是简单的打印了一下,更多异常信息可以去xxl-job控制层去查看,都是比较详细的,所以这里的异常信息就只用了e.getMessage()

AOP实现的缺点
  • 优点
  1. 实现方式简单快捷
  • 缺点
  1. 如果是执行器(应用程序)重启,调度器调度失败这种失败的任务是监控不到的
硬核修改源码

如果我们去看源码,其实发现他的报警模块是提供了接口给我们扩展的,我们直接看xxl-job-admin源码的这里就可以看到他的报警代码

其中private List jobAlarmList;是一个list,有一个默认的实现类

  • JobAlarm
public interface JobAlarm {
    public boolean doAlarm(XxlJobInfo info, XxlJobLog jobLog);

}
  • EmailJobAlarm
@Component
public class EmailJobAlarm implements JobAlarm {
}

所以我们要添加飞书通知也非常简单,直接实现JobAlarm接口,然后丢到spring容器中即可,大致代码如下

@Component
public class FeiShuJobAlarm implements JobAlarm {
    
    @Override
    public boolean doAlarm(XxlJobInfo info, XxlJobLog jobLog) {
        return false;
    }
}

这里面发送飞书消息就OK了。这里我就不实现了

改完代码重新部署xxl-job-admin就可以了。

需要注意的是修改源码方式的部署方式后续的版本升级可能存在代码冲突问题,不过xxl-job现在也不怎么维护了。倒也不是特别担心这个问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877748.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号