定時任務發展史 二

2022-01-29 18:57:43 字數 2285 閱讀 4784

第一代定時任務系統上線用了大概半年之後,就被我們厭倦了。於是就規劃了第二代定時任務系統。

第二代排程系統主要解決的是,避免每次修改定時任務的執行時間都需要重新啟動整個專案。另外也可支援單獨重新排程單個定時任務。

使用scheduler刪除定時任務

public void rescheduler() throws exception 

} logger.info("現有任務已全部取消");

this.initscheduler();

}

public void canceljob(string jobname) throws exception
job.setcronexpression(taskinfo.getschedulerrule());

string jobname = taskinfo.gettaskno() + "job";

job.getjobdatamap().put(quartzjob.object_id,objectmethod);

job.setjobname(jobname);

logger.info("----開始部署任務:" + jobname);

quartzutil.schedulecronjob(job);

logger.info("----成功部署任務:" + jobname);

public void schedulecronjob(quartzjobentity jobentity) throws exception
如果只是重新排程某乙個定時任務可以觸發單獨的呼叫

// 初始化某個載入定時任務

public void initscheduler(taskentity taskinfo) throws exception

這樣我們的第二代定時任務系統就完成了,第二代定時任務是在第一代定時任務的基礎上改造的,增加了重新排程所有定時任務和單個定時任務。

第二代定時任務系統的缺點是:定時排程和業務**耦合

第二代定時任務上線沒有多久,我們就意識到有很多的子系統也需要定時任務,比如訂單系統需要45分鐘不支付的訂單失效,監控系統需要定時掃瞄是否有業務報警,統計系統需要定時去統計一些資料,但是如果我們給每乙個子系統都做乙個定時任務的話,就不太合理,很分散。

於是計畫開發乙個統一的定時任務排程中心,負責整個平台中所有的定時任務的排程,另外規劃了監控系統,來監控和分析每次定時任務的執行結果和執行時間等資訊。為了更好的管理定時任務開發了簡單的管理介面。如下:

根據上圖可以看出,通過這個管理介面我們可以非常方便的去修改、啟動、暫停定時任務。別的系統如果需要定時任務,可以隨時在頁面去新增,全部介面化操作,不需要重新啟動專案等。

點選詳情可以清晰的檢視定時任務的上次執**況

定時任務的支援的排程方式分有兩種:http和mq,我們一般建議使用mq。

主要核心**

初始化載入

public void initscheduler() catch (exception e) 

}}

遍歷排程

public void scheduler(taskinformationsentity task,scheduler scheduler) catch (exception e) 

}

新增定時任務

public string addscheduler(string key) catch (exception e) 

}else

}

刪除定時任務

public string delscheduler(string key) catch (exception e) 

}else

}

public string resumescheduler(string key) catch (schedulerexception e) 

}else

}

專案已經開源,詳細的**請在github上面檢視。

zx-quartz

其實最後這版定時排程系統,還是有很多的缺陷,http模式沒有進行完善,開源的**中有部分內部依賴的jar還沒有去掉。開放出來僅僅做為交流使用,後期有時間的話再去慢慢完善。也歡迎各網友多提提建議,一起加入完善。

IT薪水發展史

1k 兄弟別做it了,不論你是什麼公司,國營的做it就是配角,那位兄弟願意一輩子做配角,非國營的嗎,看看做什麼別的合適,it不好混,趁早離開 1k 3k 初級階段,一般是剛進公司的,肯定非常缺錢,這時候動力足,也有時間,沒有男 女朋友拖累,象公司內部5k 6k的高手學習。什麼,沒有,什麼爛公司,你也...

記憶體發展史

記憶體 容量 指標 時期出現原因 simm記憶體 30pin 256kb 1982年至今 軟體程式和新一代80286硬體平台的出現 simm記憶體 72pin 512kb 2mb 1988 1990 pc迎來386和486時代,cpu向16bit發展 edo dram 4 16mb 電壓 5v 頻寬...

前端發展史

不知道什麼時候開始,前端開發已經到了不開乙個 watcher 就無法工作的地步了。不依賴 gulp babel webpack,還能優雅地寫 嗎?那我就帶你來回顧一下這一切是怎麼發生的。從哪開始說好呢?我們就從 前端打包 開始吧。前端打包 很久以前 也就五年左右吧,但是五年前端已經大變樣了 頁面的 ...