鍍金池/ 問答/Java  C  網(wǎng)絡(luò)安全/ 如何根據(jù)數(shù)據(jù)庫(kù)存儲(chǔ)的時(shí)間及時(shí)的執(zhí)行相關(guān)的方法?

如何根據(jù)數(shù)據(jù)庫(kù)存儲(chǔ)的時(shí)間及時(shí)的執(zhí)行相關(guān)的方法?

現(xiàn)在有一個(gè)任務(wù)執(zhí)行表

id 任務(wù)類型 訂單號(hào) 執(zhí)行時(shí)間 執(zhí)行狀態(tài) 執(zhí)行的類名
1 order 123 時(shí)間戳 是否執(zhí)行狀態(tài) 執(zhí)行類

這種怎么去實(shí)現(xiàn)在指定的時(shí)間去執(zhí)行相關(guān)的任務(wù)呀?

目前想到的做法是,定時(shí)任務(wù)定時(shí)的掃描表(總會(huì)有差值),然后判斷時(shí)間差。將時(shí)間差在20分鐘內(nèi)的(這個(gè)值只是亂定義的)任務(wù)通過一個(gè)消息隊(duì)列(目前使用的是amq),延遲發(fā)送給消費(fèi)者執(zhí)行

考慮:如果全用延遲消息隊(duì)列,目前還不知道怎么持久化消息。只有數(shù)據(jù)庫(kù)去存這些任務(wù),但怎么去將這些數(shù)據(jù)庫(kù)存的任務(wù),及時(shí)的發(fā)送給消費(fèi)者消費(fèi),還沒有解決辦法

回答
編輯回答
兔寶寶

一種可行的方案是使用zookeeper。
當(dāng)你插入一條記錄時(shí),在zookeeper中創(chuàng)建一個(gè)節(jié)點(diǎn),并設(shè)置超時(shí)時(shí)間(自己算好執(zhí)行時(shí)間跟當(dāng)前時(shí)間的時(shí)間差),然后對(duì)該節(jié)點(diǎn)設(shè)置watcher。當(dāng)超時(shí)時(shí)間一過,watcher中會(huì)收到通知,此時(shí)執(zhí)行你想要執(zhí)行的方法就行

2017年12月24日 10:13