第一代定時任務系統上線用了大概半年之後,就被我們厭倦了。於是就規劃了第二代定時任務系統。
第二代排程系統主要解決的是,避免每次修改定時任務的執行時間都需要重新啟動整個專案。另外也可支援單獨重新排程單個定時任務。
使用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,還能優雅地寫 嗎?那我就帶你來回顧一下這一切是怎麼發生的。從哪開始說好呢?我們就從 前端打包 開始吧。前端打包 很久以前 也就五年左右吧,但是五年前端已經大變樣了 頁面的 ...