由于業(yè)務(wù)需要定時(shí)器進(jìn)行定時(shí)處理一些業(yè)務(wù),但有時(shí)候更新代碼的時(shí)候又不得不讓服務(wù)重啟或者平滑重啟,但是這樣一臺(tái)定時(shí)器又被銷(xiāo)毀掉了,很多業(yè)務(wù)定時(shí)任務(wù)又不能停下來(lái),如此情況下么,如何讓服務(wù)器重啟前將當(dāng)前所有定時(shí)任務(wù)進(jìn)行緩存到硬盤(pán),當(dāng)服務(wù)重新啟動(dòng)時(shí)能繼續(xù)加載重啟前的任務(wù)。
將定時(shí)任務(wù)存儲(chǔ)在mysql,啟動(dòng)時(shí)間,時(shí)間間隔。然后進(jìn)程重啟后讀取mysql,重新添加定時(shí)器。
我覺(jué)得是你業(yè)務(wù)設(shè)計(jì)出問(wèn)題了,這個(gè)總會(huì)有各種意外情況出現(xiàn)的,例如意外關(guān)機(jī),斷電,服務(wù)器卡死,數(shù)據(jù)庫(kù)出問(wèn)題無(wú)法連接......,如果你的代碼是沒(méi)法安全重啟的話,你到時(shí)要怎么處理呢?我覺(jué)得這一塊99%還是你設(shè)計(jì)的業(yè)務(wù)邏輯不合理,緩存定時(shí)器里面涉及到的又不是一個(gè)定時(shí)器id,這些哪有那么好存儲(chǔ)的.還不如直接寫(xiě)入數(shù)據(jù)庫(kù),幾點(diǎn)幾分執(zhí)行xxx,然后一秒掃一次還靠譜一些.