一、什么是定時任務
定時任務是每個業(yè)務常見的需求,比如每分鐘掃描超時支付的訂單,每小時清理一次數(shù)據(jù)庫歷史數(shù)據(jù),每天統(tǒng)計前一天的數(shù)據(jù)并生成報表等等。
隨著微服務和云計算的興起,定時任務技術也是發(fā)展迅速,不僅能做單機的定時任務,而且在分布式系統(tǒng)下應用也很廣泛,成為了業(yè)務做兜底、數(shù)據(jù)處理的第一選擇。
二、定時任務為什么需要通知
定時任務現(xiàn)在在業(yè)務數(shù)據(jù)處理中的比重越來越重,如果業(yè)務數(shù)據(jù)處理失敗了,需要及時通知到業(yè)務方,確保了服務的可靠性和穩(wěn)定性。同時,好的定時任務通知系統(tǒng),還能分析任務失敗的原因(比如堆棧信息)并通知給業(yè)務方,幫助用戶快速定位問題。
根據(jù)通知的類型,大概可以有以下幾類:
- 成功通知:任務執(zhí)行成功,把結(jié)果通知給用戶。比如統(tǒng)計前一天的數(shù)據(jù)并把GaaP結(jié)果通過短信等渠道發(fā)送給對應負責人。
- 超時通知:任務執(zhí)行超時,通知用戶。
- 失敗通知:任務執(zhí)行失敗,通知用戶。
- 機器異常通知:運行的機器下線或者繁忙,通知用戶。
三、自研定時任務報警通知
如果是自研的定時任務系統(tǒng),或者使用了開源定時任務框架(比如Quartz),想要增加報警通知能力,我們可以采取什么方案呢?從實時性角度來看,短信和電話通知實時性最高,但是這兩種方案需要比較大的成本,比如短信通知需要短信平臺。如果沒有短信平臺,我們也可以采用郵件和webhook通知。
3.1、郵件
每個郵件服務器都由SMTP服務器和POP3服務器構(gòu)成,其中SMTP服務器負責發(fā)郵件的請求,而POP3負責收郵件的請求。通過SMTP與POP3即可實現(xiàn)郵件的收發(fā)。
郵件發(fā)送原理圖文章來源:http://www.zghlxwxcb.cn/news/detail-434651.html
- 配置郵件服務器
以網(wǎng)易163郵件為例,在發(fā)送方郵箱設置里,開啟POP3/SMTP服務文章來源地址http://www.zghlxwxcb.cn/news/detail-434651.html
- 以Java代碼為例,發(fā)送郵件的demo
import org.junit.Test;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Properties;
public class SendMailDemo {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.163.com");//設置發(fā)送方郵箱服務器
prop.setProperty("mail.transport.protocol","smtp");//郵件發(fā)送協(xié)議
prop.setProperty("mail.smtp.auth","true");//需要驗證用戶名密碼
Session session = Session.getDefaultInstance(prop);
Transport ts = session.getTransport();
String mailUser = "xxx@163.com"; //郵箱的賬號
String mailPasswd = "123456789"; //郵箱的密碼
ts.connect("smtp.163.com", mailUser, mailPasswd);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(mailUser));
//
到了這里,關于定時任務報警通知解決方案詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!