Spring動態(tài)創(chuàng)建定時任務(wù)

創(chuàng)建config

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class RecordScheduleTask {

    @Bean
    public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
        log.info("----request threadPoolTaskScheduler, 創(chuàng)建定時任務(wù)調(diào)度線程池 !----");
        ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
        threadPoolTaskScheduler.setPoolSize(64); //線程池大小
        threadPoolTaskScheduler.setThreadNamePrefix("taskSchedulerExecutor-");
        threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true);
        threadPoolTaskScheduler.setAwaitTerminationSeconds(60);
        return threadPoolTaskScheduler;
    }
}

插入定時任務(wù)

...
@Resource
private ThreadPoolTaskScheduler threadPoolTaskScheduler;

private Map<Long, List<ScheduledFuture>> scheduledFutureMap = new ConcurrentHashMap<>();

public void createScheduleTask(ScheduleRecordExeModel exeModel) {
        List<ScheduledFuture> futureList = new ArrayList<>();

        exeModel.getCronList().forEach(cron -> {
            ScheduledFuture scheduledFuture = threadPoolTaskScheduler.schedule(() -> {
                        executeRecordBySystem(exeModel.getRecordId());
                    },
                    (triggerContext) -> {
                        CronTrigger cronTrigger = new CronTrigger(cron);
                        return cronTrigger.nextExecutionTime(triggerContext);
                    });
            futureList.add(scheduledFuture);
        });

        if (!CollectionUtils.isEmpty(futureList)) {
            scheduledFutureMap.put(exeModel.getRecordId(), futureList); //存儲定時任務(wù)的map,不是必須的
        }
    }

服務(wù)啟動時自動創(chuàng)建定時任務(wù)

 @PostConstruct //這個注解代表在服務(wù)啟動的時候執(zhí)行
    private void initScheduleTask(){
        List<xxx> scheduleRecords = xxx;
        scheduleRecords.forEach(record ->{
            ScheduleRecordExeModel exeModel = xxx;
            createScheduleTask(exeModel);
        });
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猛们,一起剝皮案震驚了整個濱河市每聪,隨后出現(xiàn)的幾起案子间坐,更是在濱河造成了極大的恐慌毅臊,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饿序,死亡現(xiàn)場離奇詭異勉失,居然都是意外死亡,警方通過查閱死者的電腦和手機原探,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門乱凿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咽弦,你說我怎么就攤上這事徒蟆。” “怎么了型型?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵段审,是天一觀的道長。 經(jīng)常有香客問我闹蒜,道長寺枉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任绷落,我火速辦了婚禮姥闪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘砌烁。我一直安慰自己筐喳,他們只是感情好,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布函喉。 她就那樣靜靜地躺著疏唾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪函似。 梳的紋絲不亂的頭發(fā)上槐脏,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機與錄音撇寞,去河邊找鬼顿天。 笑死,一個胖子當著我的面吹牛蔑担,可吹牛的內(nèi)容都是我干的牌废。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼啤握,長吁一口氣:“原來是場噩夢啊……” “哼鸟缕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤懂从,失蹤者是張志新(化名)和其女友劉穎授段,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體番甩,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡侵贵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缘薛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窍育。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宴胧,靈堂內(nèi)的尸體忽然破棺而出漱抓,到底是詐尸還是另有隱情,我是刑警寧澤恕齐,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布乞娄,位于F島的核電站,受9級特大地震影響檐迟,放射性物質(zhì)發(fā)生泄漏补胚。R本人自食惡果不足惜码耐,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一追迟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骚腥,春花似錦敦间、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至契沫,卻和暖如春带猴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背懈万。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工拴清, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人会通。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓口予,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涕侈。 傳聞我的和親對象是個殘疾皇子沪停,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容