說(shuō)一下場(chǎng)景
舉例:
某個(gè)功能需要在線創(chuàng)建定時(shí)任務(wù),并可以修改任務(wù)的執(zhí)行時(shí)間辟癌,定時(shí)任務(wù)修改時(shí)間之后如何立即停掉舊的定時(shí)任務(wù)?
說(shuō)一種解決思路參考吧,有更好的思路求分享<瞿怼黍少!
用pm2起cluster,固定線程起定時(shí)任務(wù)处面,定時(shí)任務(wù)當(dāng)然要將執(zhí)行頻率等關(guān)鍵數(shù)據(jù)入庫(kù)厂置。
借助redis記錄關(guān)鍵操作的信息:比如新增入庫(kù)了一個(gè)任務(wù),某個(gè)任務(wù)的執(zhí)行頻率修改了刪除了某個(gè)任務(wù)等等魂角。
當(dāng)cluster中的任一線程接收到更新定時(shí)任務(wù)的請(qǐng)求時(shí)昵济,在redis中緩存關(guān)鍵信息。
再起一個(gè)定時(shí)任務(wù)監(jiān)控redis的關(guān)鍵指標(biāo)野揪,其實(shí)就是掃描定時(shí)任務(wù)是否有變化访忿,如果有變化當(dāng)將前線程干掉,pm2會(huì)復(fù)活該線程繼而重新按照庫(kù)中最新的任務(wù)數(shù)據(jù)初始化定時(shí)任務(wù)斯稳。
此方法不認(rèn)為是最好的解決方法海铆,如果有更好的思路請(qǐng)指教。