国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

分布式定時(shí)任務(wù)

這篇具有很好參考價(jià)值的文章主要介紹了分布式定時(shí)任務(wù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本文引用了谷粒商城的課程

定時(shí)任務(wù)

定時(shí)任務(wù)是我們系統(tǒng)里面經(jīng)常要用到的一些功能。如每天的支付訂單要與支付寶進(jìn)行對(duì)賬操作、每個(gè)月定期進(jìn)行財(cái)務(wù)匯總、在服務(wù)空閑時(shí)定時(shí)統(tǒng)計(jì)當(dāng)天所有信息數(shù)據(jù)等。
定時(shí)任務(wù)有個(gè)非常流行的框架Quartz和Java原生API的Timer類(lèi)。Spring框架也可以支持定時(shí)任務(wù)。

cron表達(dá)式

語(yǔ)法:秒 分 時(shí) 日 月 周 年(Spring 不支持)
http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html

分布式定時(shí)任務(wù)
特殊字符:
分布式定時(shí)任務(wù)

,:枚舉: (cron=“7,9,23 * * * * ?”):任意時(shí)刻的 7,9,23 秒啟動(dòng)這個(gè)任務(wù);
-:范圍: (cron=“7-20 * * * * ?”):任意時(shí)刻的 7-20 秒之間,每秒啟動(dòng)一次
()* :任意;指定位置的任意時(shí)刻都可以
/:步長(zhǎng); (cron=“7/5 * * * * ?”):第 7 秒啟動(dòng),每 5 秒一次;(cron=“/5 * * * * ?“):任意秒啟動(dòng),每 5 秒一次;
?:(出現(xiàn)在日和周幾的位置):為了防止日和周沖突,在周和日上如果要寫(xiě)通配符使用?(cron=”
* * 1 * ?”):每月的 1 號(hào),啟動(dòng)這個(gè)任務(wù);
L:(出現(xiàn)在日和周的位置)”, last:最后一個(gè) (cron=“* * * ? * 3L”):每月的最后一個(gè)周二
W:Work Day:工作日 (cron=“* * * W * ?”):每個(gè)月的工作日觸發(fā) (cron=“* * * LW * ?”):每個(gè)月的最后一個(gè)工作日觸發(fā)
#:第幾個(gè) (cron=“* * * ? * 5#2”):每個(gè)月的第 2 個(gè)周 4

注意:日和周幾通常會(huì)發(fā)生沖突,如果日定了,那么周就要使用?通配符

可以在線(xiàn)生成cron表達(dá)式
https://cron.qqe2.com/

cron實(shí)例
分布式定時(shí)任務(wù)

SpringBoot整合

 * 1、Spring中6位組成,不允許第7位的年
 * 2、在周幾的位置,1-7代表周一到周日:MON-SUN

測(cè)試代碼如下

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


/**
 * 定時(shí)任務(wù)
 *         1、@EnableScheduling開(kāi)啟定時(shí)任務(wù)
 *         2、@scheduled 開(kāi)啟一個(gè)定時(shí)任務(wù)
 * **/
@EnableScheduling
@Component
@Slf4j
public class HelloSchedule {
    @Scheduled(cron = "*/5 * * * * 4")
    public void hello(){
        log.info("hello.....");

        try {
            Thread.sleep(8000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

但是這里存在一個(gè)問(wèn)題

定時(shí)任務(wù)不應(yīng)該阻塞,默認(rèn)是阻塞的。(也就是要等業(yè)務(wù)執(zhí)行完,定時(shí)任務(wù)才能開(kāi)始執(zhí)行)
分布式定時(shí)任務(wù)
可以使用以下幾種解決方案
1)、CompletableFuture.runAsync()可以讓業(yè)務(wù)以異步的方式,自己提交到線(xiàn)程池
2)、支持定時(shí)任務(wù)線(xiàn)程池設(shè)置:

spring.task.scheduling.pool.size=5

3)、讓定時(shí)任務(wù)異步執(zhí)行
通常是采用第3種方案
開(kāi)啟異步定時(shí)任務(wù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-414498.html

  • 異步任務(wù)
    1、@EnableAsycn:開(kāi)啟異步任務(wù)功能
    2、@Async 給希望異步執(zhí)行的方法上標(biāo)注上注解
    3、自動(dòng)配置類(lèi) TaskExecutionAutoConfiguration 屬性綁定在TaskExecutionProperties
    4、.配置定時(shí)任務(wù)的線(xiàn)程池屬性:
spring.task.execution.pool.core-size=5
spring.task.execution.pool.max-size=30
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


/**
 * 定時(shí)任務(wù)
 *         1、@EnableScheduling開(kāi)啟定時(shí)任務(wù)
 *         2、@scheduled 開(kāi)啟一個(gè)定時(shí)任務(wù)
 * 異步任務(wù)
 *         1、@EnableAsycn:開(kāi)啟異步任務(wù)功能
 *         2、@Async 給希望異步執(zhí)行的方法上標(biāo)注上注解
 *         3、自動(dòng)配置類(lèi) TaskExecutionAutoConfiguration 屬性綁定在TaskExecutionProperties
 *         4.配置:
 *              spring.task.execution.pool.core-size=5
 *              spring.task.execution.pool.max-size=30
 * **/
@EnableScheduling
@Component
@Slf4j
@EnableAsync
public class HelloSchedule {

    /**
     * 1、Spring中6位組成,不允許第7位的年
     * 2、在周幾的位置,1-7代表周一到周日:MON-SUN
     * 3、定時(shí)任務(wù)不應(yīng)該阻塞,默認(rèn)是阻塞的。(也就是要等業(yè)務(wù)執(zhí)行完,定時(shí)任務(wù)才能開(kāi)始執(zhí)行)
     *      1)、CompletableFuture.runAsync()可以讓業(yè)務(wù)以異步的方式,自己提交到線(xiàn)程池
     *      2)、支持定時(shí)任務(wù)線(xiàn)程池設(shè)置:
     *          spring.task.scheduling.pool.size=5
     *      3)、讓定時(shí)任務(wù)異步執(zhí)行
     *
     *     解決:使用異步+定時(shí)任務(wù)來(lái)完成定時(shí)任務(wù)不阻塞的功能。
     * **/
    @Async
    @Scheduled(cron = "*/5 * * * * 4")
    public void hello(){
        log.info("hello.....");

        try {
            Thread.sleep(8000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

到了這里,關(guān)于分布式定時(shí)任務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 分布式任務(wù)調(diào)度,定時(shí)任務(wù)的處理方案

    分布式任務(wù)調(diào)度,定時(shí)任務(wù)的處理方案

    適用場(chǎng)景: Spring 定時(shí)任務(wù)是 Spring 框架提供的一種輕量級(jí)的任務(wù)調(diào)度方案,它的特點(diǎn)是簡(jiǎn)單易用、輕量級(jí)。Spring 定時(shí)任務(wù)的執(zhí)行是在 單個(gè)節(jié)點(diǎn) 上進(jìn)行的,如果需要分布式任務(wù)調(diào)度,需要自己實(shí)現(xiàn)相應(yīng)的解決方案。 1.導(dǎo)入依賴(lài)版本自己控制 2.啟動(dòng)類(lèi)加上@EnableScheduling 3.編寫(xiě)業(yè)

    2023年04月14日
    瀏覽(46)
  • 架構(gòu)師系列- 定時(shí)任務(wù)(一)- 單機(jī)和分布式定時(shí)任務(wù)比較

    架構(gòu)師系列- 定時(shí)任務(wù)(一)- 單機(jī)和分布式定時(shí)任務(wù)比較

    定時(shí)任務(wù)概述 在很多應(yīng)用中我們都是需要執(zhí)行一些定時(shí)任務(wù)的,比如定時(shí)發(fā)送短信,定時(shí)統(tǒng)計(jì)數(shù)據(jù),在實(shí)際使用中我們使用什么定時(shí)任務(wù)框架來(lái)實(shí)現(xiàn)我們的業(yè)務(wù),定時(shí)任務(wù)使用中會(huì)遇到哪些坑,如何最大化的提高定時(shí)任務(wù)的性能。 我們這里主要介紹單機(jī)和分布式兩大類(lèi)的解

    2024年04月27日
    瀏覽(30)
  • 分布式定時(shí)任務(wù)框架 PowerJob

    分布式定時(shí)任務(wù)框架 PowerJob

    1.1 為什么需要使用定時(shí)任務(wù)調(diào)度 (1)時(shí)間驅(qū)動(dòng)處理場(chǎng)景:整點(diǎn)發(fā)送優(yōu)惠券,每天更新收益,每天刷新標(biāo)簽數(shù)據(jù)和人群數(shù)據(jù)。 (2)批量處理數(shù)據(jù):按月批量統(tǒng)計(jì)報(bào)表數(shù)據(jù),批量更新短信狀態(tài),實(shí)時(shí)性要求不高。 (3)異步執(zhí)行解耦:活動(dòng)狀態(tài)刷新,異步執(zhí)行離線(xiàn)查詢(xún),與內(nèi)部

    2024年02月09日
    瀏覽(25)
  • Java | 一分鐘掌握定時(shí)任務(wù) | 9 - PowerJob分布式定時(shí)任務(wù)

    Java | 一分鐘掌握定時(shí)任務(wù) | 9 - PowerJob分布式定時(shí)任務(wù)

    作者:Mars醬 聲明:本文章由Mars醬整理編寫(xiě),部分內(nèi)容來(lái)源于網(wǎng)絡(luò),如有疑問(wèn)請(qǐng)聯(lián)系本人。 轉(zhuǎn)載:歡迎轉(zhuǎn)載,轉(zhuǎn)載前先請(qǐng)聯(lián)系我! 我們選擇一套框架或者技術(shù)的時(shí)候,一定要知道它的特點(diǎn)和功能,不能為了(學(xué)習(xí))技術(shù)而(選擇)技術(shù),那是對(duì)產(chǎn)品的不負(fù)責(zé)任。官方說(shuō)有類(lèi)似情況

    2024年01月24日
    瀏覽(20)
  • Java | 一分鐘掌握定時(shí)任務(wù) | 7 - ElasticJob分布式定時(shí)任務(wù)

    Java | 一分鐘掌握定時(shí)任務(wù) | 7 - ElasticJob分布式定時(shí)任務(wù)

    作者:Mars醬 聲明:本文章由Mars醬編寫(xiě),部分內(nèi)容來(lái)源于網(wǎng)絡(luò),如有疑問(wèn)請(qǐng)聯(lián)系本人。 轉(zhuǎn)載:歡迎轉(zhuǎn)載,轉(zhuǎn)載前先請(qǐng)聯(lián)系我! ElasticJob 是面向互聯(lián)網(wǎng)生態(tài)和海量任務(wù)的分布式調(diào)度解決方案。 它通過(guò)彈性調(diào)度、資源管控、以及任務(wù)治理的功能,打造一個(gè)適用于互聯(lián)網(wǎng)場(chǎng)景的分

    2024年02月06日
    瀏覽(35)
  • 分布式定時(shí)任務(wù)調(diào)度框架Quartz

    分布式定時(shí)任務(wù)調(diào)度框架Quartz

    Quartz是一個(gè)定時(shí)任務(wù)調(diào)度框架,比如你遇到這樣的問(wèn)題: 比如淘寶的待支付功能,后臺(tái)會(huì)在你生成訂單后24小時(shí)后,查看訂單是否支付,未支付則取消訂單 比如vip的每月自動(dòng)續(xù)費(fèi)功能 … 想定時(shí)在某個(gè)時(shí)間,去做某件事 Quartz是一套輕量級(jí)的任務(wù)調(diào)度框架,只需要定義了 Job(

    2024年02月04日
    瀏覽(37)
  • 使用shedlock實(shí)現(xiàn)分布式定時(shí)任務(wù)鎖【防止task定時(shí)任務(wù)重復(fù)執(zhí)行】

    使用shedlock實(shí)現(xiàn)分布式定時(shí)任務(wù)鎖【防止task定時(shí)任務(wù)重復(fù)執(zhí)行】

    第一步:引入shedlock相關(guān)依賴(lài) ShedLock還可以使用Mongo,Redis,Hazelcast,ZooKeeper等外部存儲(chǔ)進(jìn)行協(xié)調(diào),例如使用redis則引入下面的包 第二步:創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu),數(shù)據(jù)庫(kù)表的腳本如下: 第三步:添加shedlock配置類(lèi) (定時(shí)任務(wù)防重復(fù)執(zhí)行的配置類(lèi)) 第四步:在啟動(dòng)類(lèi)上添加啟動(dòng)注

    2024年02月10日
    瀏覽(32)
  • 分布式定時(shí)任務(wù)調(diào)度xxl-job

    分布式定時(shí)任務(wù)調(diào)度xxl-job

    Quartz中最重要的三個(gè)對(duì)象:Job(作業(yè))、Trigger(觸發(fā)器)、Scheduler(調(diào)度器)。 xxl-job的調(diào)度原理:調(diào)度線(xiàn)程在一個(gè)while循環(huán)中不斷地獲取一定數(shù)量的即將觸發(fā)的Trigger,拿到綁定的Job,包裝成工作線(xiàn)程執(zhí)行。 當(dāng)然,不管在任何調(diào)度系統(tǒng)中,底層都是線(xiàn)程模型。如果要自己寫(xiě)一個(gè)

    2024年03月10日
    瀏覽(20)
  • springcloud:新一代分布式定時(shí)任務(wù)框架——PowerJob

    springcloud:新一代分布式定時(shí)任務(wù)框架——PowerJob

    之前我們講解過(guò)主流的分布式定時(shí)任務(wù)框架xxl-job,隨著技術(shù)的迭代更新,更多的定時(shí)任務(wù)框架也開(kāi)始出現(xiàn),今天我們來(lái)看一看新一代的定時(shí)任務(wù)框架 PowerJob PowerJob是基于java開(kāi)發(fā)的企業(yè)級(jí)的分布式任務(wù)調(diào)度平臺(tái),與xxl-job一樣,基于web頁(yè)面實(shí)現(xiàn)任務(wù)調(diào)度配置與記錄,使用簡(jiǎn)單,

    2024年02月02日
    瀏覽(27)
  • 分布式定時(shí)任務(wù)-XXL-JOB-教程+實(shí)戰(zhàn)

    分布式定時(shí)任務(wù)-XXL-JOB-教程+實(shí)戰(zhàn)

    1.定時(shí)任務(wù)認(rèn)識(shí) 1.1.什么是定時(shí)任務(wù) 定時(shí)任務(wù)是按照指定時(shí)間周期運(yùn)行任務(wù)。使用場(chǎng)景為在某個(gè)固定時(shí)間點(diǎn)執(zhí)行,或者周期性的去執(zhí)行某個(gè)任務(wù),比如:每天晚上24點(diǎn)做數(shù)據(jù)匯總,定時(shí)發(fā)送短信等。 1.2.常見(jiàn)定時(shí)任務(wù)方案 While + Sleep : 通過(guò)循環(huán)加休眠的方式定時(shí)執(zhí)行 Timer和Time

    2024年02月16日
    瀏覽(31)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包