• 定时任务报警通知解决方案详解


    一、什么是定时任务

    定时任务是每个业务常见的需求,比如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表等等。

    随着微服务和云计算的兴起,定时任务技术也是发展迅速,不仅能做单机的定时任务,而且在分布式系统下应用也很广泛,成为了业务做兜底、数据处理的第一选择。

    二、定时任务为什么需要通知

    定时任务现在在业务数据处理中的比重越来越重,如果业务数据处理失败了,需要及时通知到业务方,确保了服务的可靠性和稳定性。同时,好的定时任务通知系统,还能分析任务失败的原因(比如堆栈信息)并通知给业务方,帮助用户快速定位问题。

    根据通知的类型,大概可以有以下几类:

    • 成功通知:任务执行成功,把结果通知给用户。比如统计前一天的数据并把GaaP结果通过短信等渠道发送给对应负责人。
    • 超时通知:任务执行超时,通知用户。
    • 失败通知:任务执行失败,通知用户。
    • 机器异常通知:运行的机器下线或者繁忙,通知用户。

    三、自研定时任务报警通知

    如果是自研的定时任务系统,或者使用了开源定时任务框架(比如Quartz),想要增加报警通知能力,我们可以采取什么方案呢?从实时性角度来看,短信和电话通知实时性最高,但是这两种方案需要比较大的成本,比如短信通知需要短信平台。如果没有短信平台,我们也可以采用邮件和webhook通知。

    3.1、邮件

    每个邮件服务器都由SMTP服务器和POP3服务器构成,其中SMTP服务器负责发邮件的请求,而POP3负责收邮件的请求。通过SMTP与POP3即可实现邮件的收发。

    邮件发送原理图

    1. 配置邮件服务器

    以网易163邮件为例,在发送方邮箱设置里,开启POP3/SMTP服务

    1. 以Java代码为例,发送邮件的demo
    1. import org.junit.Test;
    2. import javax.mail.Message;
    3. import javax.mail.Session;
    4. import javax.mail.Transport;
    5. import javax.mail.internet.InternetAddress;
    6. import javax.mail.internet.MimeMessage;
    7. import java.io.PrintWriter;
    8. import java.io.StringWriter;
    9. import java.util.Properties;
    10. public class SendMailDemo {
    11. public static void main(String[] args) throws Exception {
    12. Properties prop = new Properties();
    13. prop.setProperty("mail.host","smtp.163.com");//设置发送方邮箱服务器
    14. prop.setProperty("mail.transport.protocol","smtp");//邮件发送协议
    15. prop.setProperty("mail.smtp.auth","true");//需要验证用户名密码
    16. Session session = Session.getDefaultInstance(prop);
    17. Transport ts = session.getTransport();
    18. String mailUser = "xxx@163.com"; //邮箱的账号
    19. String mailPasswd = "123456789"; //邮箱的密码
    20. ts.connect("smtp.163.com", mailUser, mailPasswd);
    21. MimeMessage message = new MimeMessage(session);
    22. message.setFrom(new InternetAddress(mailUser));
  • 相关阅读:
    verilog实现分频(奇数分频和偶数分频,通用版)
    目标检测 详解SSD原理,数据处理与复现
    利用R语言进行生态环境数据的可视化分析:方法和实践
    如何将所有公司的校招信息一网打尽?
    Nginx简介,Nginx搭载负载均衡以及Nginx部署前端项目
    指纹浏览器有什么用?盘点指纹浏览器八大应用场景
    法大大音视频双录新品,打造企业合规新体验
    2023年Java核心技术大会(Core Java Week 2023)-核心PPT资料下载
    Hadoop系列(四)——Zookeeper总结
    四.pandas数据处理
  • 原文地址:https://blog.csdn.net/weixin_43970890/article/details/126507101