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

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

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

第一步:引入shedlock相關(guān)依賴

 <!--集成shedlock解決定時(shí)任務(wù)重復(fù)執(zhí)行的問(wèn)題-->
            <dependency>
                <groupId>net.javacrumbs.shedlock</groupId>
                <artifactId>shedlock-spring</artifactId>
                <version>2.2.1</version>
            </dependency>
            <dependency>
                <groupId>net.javacrumbs.shedlock</groupId>
                <artifactId>shedlock-provider-jdbc-template</artifactId>
                <version>2.2.1</version>
            </dependency>

ShedLock還可以使用Mongo,Redis,Hazelcast,ZooKeeper等外部存儲(chǔ)進(jìn)行協(xié)調(diào),例如使用redis則引入下面的包

			<dependency>
                <groupId>net.javacrumbs.shedlock</groupId>
                <artifactId>shedlock-provider-redis-spring</artifactId>
                <version>${shedlock.redis.version}</version>
            </dependency>

第二步:創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu),數(shù)據(jù)庫(kù)表的腳本如下:

CREATE TABLE shedlock(
	NAME VARCHAR(64),
	lock_until TIMESTAMP(3) NULL,
	locked_at TIMESTAMP(3) NULL,
	locked_by VARCHAR(255),
	PRIMARY KEY (NAME)
)

第三步:添加shedlock配置類(定時(shí)任務(wù)防重復(fù)執(zhí)行的配置類)

package com.sionma.dcxt.config;

import net.javacrumbs.shedlock.core.LockProvider;
import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider;
import net.javacrumbs.shedlock.spring.ScheduledLockConfiguration;
import net.javacrumbs.shedlock.spring.ScheduledLockConfigurationBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

import javax.sql.DataSource;
import java.time.Duration;

/**
 * FileName: ShedlockConfig
 * Author:   SixJR.
 * Date:     2023/6/23 21:26:24
 * Description: 定時(shí)任務(wù)防重復(fù)執(zhí)行的配置類
 * History:
 * <author>          <time>          <version>          <desc>
 */
@Configuration
@EnableScheduling
public class ShedlockConfig {
    @Bean
    public LockProvider lockProvider(DataSource dataSource) {
        return new JdbcTemplateLockProvider(dataSource);
    }

    @Bean
    public ScheduledLockConfiguration scheduledLockConfiguration(LockProvider lockProvider) {
        return ScheduledLockConfigurationBuilder
                .withLockProvider(lockProvider)
                .withPoolSize(10)
                .withDefaultLockAtMostFor(Duration.ofMinutes(10))
                .build();
    }

}

第四步:在啟動(dòng)類上添加啟動(dòng)注解,否則SchedulerLock不會(huì)生效

@EnableSchedulerLock(defaultLockAtMostFor = "PT50S")

使用shedlock實(shí)現(xiàn)分布式定時(shí)任務(wù)鎖【防止task定時(shí)任務(wù)重復(fù)執(zhí)行】
第五步:在執(zhí)行定時(shí)任務(wù)的方法上面加上你要限制重復(fù)執(zhí)行的注解@SchedulerLock

// 鎖最多保持50秒,最少保持40秒
@SchedulerLock(name = "orderCancelTask", lockAtMostFor = 50 * 1000, lockAtLeastFor = 40 * 1000) 

以下是該注解的屬性解釋:
@SchedulerLock注解是Quartz Scheduler中的一個(gè)擴(kuò)展注解,用于控制定時(shí)任務(wù)的并發(fā)執(zhí)行。該注解具有以下屬性:
name:設(shè)置任務(wù)的名稱。該名稱用于標(biāo)識(shí)任務(wù),在Quartz Scheduler中唯一。通常建議為任務(wù)命名一個(gè)具有描述性的名稱。

lockAtMostFor:設(shè)置任務(wù)的最長(zhǎng)鎖定時(shí)間。這個(gè)值表示任務(wù)的最長(zhǎng)允許運(yùn)行時(shí)間。如果任務(wù)在此時(shí)間段內(nèi)未能執(zhí)行完成,Quartz Scheduler將會(huì)中斷任務(wù)運(yùn)行。屬性值是以毫秒為單位的長(zhǎng)整數(shù)。

lockAtLeastFor:設(shè)置任務(wù)的最短鎖定時(shí)間。這個(gè)值表示任務(wù)被鎖定的最短時(shí)間。即使任務(wù)的業(yè)務(wù)邏輯執(zhí)行時(shí)間很短,也會(huì)保持鎖定指定的時(shí)間。屬性值是以毫秒為單位的長(zhǎng)整數(shù)。
使用shedlock實(shí)現(xiàn)分布式定時(shí)任務(wù)鎖【防止task定時(shí)任務(wù)重復(fù)執(zhí)行】文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-497805.html

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

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(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)文章

  • 架構(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ī)和分布式兩大類的解

    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í)行離線查詢,與內(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ō)有類似情況

    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)
  • Spring Boot 3 整合 xxl-job 實(shí)現(xiàn)分布式定時(shí)任務(wù)調(diào)度,結(jié)合 Docker 容器化部署(圖文指南)

    Spring Boot 3 整合 xxl-job 實(shí)現(xiàn)分布式定時(shí)任務(wù)調(diào)度,結(jié)合 Docker 容器化部署(圖文指南)

    xxl-job 是一個(gè)分布式任務(wù)調(diào)度平臺(tái),它提供了強(qiáng)大的任務(wù)調(diào)度和執(zhí)行能力,可以幫助我們實(shí)現(xiàn)任務(wù)的自動(dòng)化調(diào)度和執(zhí)行。本文將介紹如何在 Docker 環(huán)境下部署 xxl-job,并將其與 Spring Boot 進(jìn)行整合。 數(shù)據(jù)庫(kù)腳本:tables_xxl_job-2.4.0.sql Docker 鏡像地址: https://hub.docker.com/r/xuxueli/xxl-jo

    2024年02月06日
    瀏覽(35)
  • 分布式定時(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)度線程在一個(gè)while循環(huán)中不斷地獲取一定數(shù)量的即將觸發(fā)的Trigger,拿到綁定的Job,包裝成工作線程執(zhí)行。 當(dāng)然,不管在任何調(diào)度系統(tǒng)中,底層都是線程模型。如果要自己寫(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)
  • Springboot 定時(shí)任務(wù),分布式下冪等性如何解決

    Springboot 定時(shí)任務(wù),分布式下冪等性如何解決

    在分布式環(huán)境下,定時(shí)任務(wù)的冪等性問(wèn)題需要考慮多個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)一致性和事務(wù)處理。 一種解決方法是使用分布式鎖來(lái)保證同一時(shí)間只有一個(gè)節(jié)點(diǎn)能夠執(zhí)行該任務(wù)。具體實(shí)現(xiàn)可以使用Redis或Zookeeper等分布式協(xié)調(diào)工具提供的分布式鎖功能。 另一種解決方法是使用消息隊(duì)列來(lái)

    2024年02月11日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包