日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring Boot集成ShedLock分布式定時任務的實現示例

瀏覽:25日期:2023-07-14 13:04:02
目錄一、ShedLock是什么?二、落地實現1.1 引入依賴包1.2 配置數據庫連接信息1.3 創(chuàng)建Mysql數據表1.4 配置LockProvider1.5 創(chuàng)建定時Job1.6 主啟動類1.7 執(zhí)行成功分析1.8 修改表名總結一、ShedLock是什么?

官方地址:github.com/lukas-kreca…

以下是ShedLock鎖提供者,通過外部存儲實現鎖,由下圖可知外部存儲集成的庫還是很豐富的

Spring Boot集成ShedLock分布式定時任務的實現示例

本篇教程我們基于JdbcTemplate存儲為例來使用ShedLock鎖。

二、落地實現1.1 引入依賴包

shedlock所需依賴包:

<dependency> <groupId>net.javacrumbs.shedlock</groupId> <artifactId>shedlock-spring</artifactId> <version>4.23.0</version></dependency> <!--每個外部存儲實例所需依賴包不一樣,這里是jdbc--><dependency> <groupId>net.javacrumbs.shedlock</groupId> <artifactId>shedlock-provider-jdbc-template</artifactId> <version>4.23.0</version></dependency>

JdbcTemplate依賴包:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dependency>

web工程依賴包:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>1.2 配置數據庫連接信息

server: port: 9999spring: datasource: url: jdbc:mysql://192.168.31.158:3306/testjdbc?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver type: com.mysql.cj.jdbc.MysqlDataSource1.3 創(chuàng)建Mysql數據表

# MySQL, MariaDBCREATE TABLE shedlock(name VARCHAR(64) NOT NULL, lock_until TIMESTAMP(3) NOT NULL, locked_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name));# PostgresCREATE TABLE shedlock(name VARCHAR(64) NOT NULL, lock_until TIMESTAMP NOT NULL, locked_at TIMESTAMP NOT NULL, locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name));# OracleCREATE TABLE shedlock(name VARCHAR(64) NOT NULL, lock_until TIMESTAMP(3) NOT NULL, locked_at TIMESTAMP(3) NOT NULL, locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name));# MS SQLCREATE TABLE shedlock(name VARCHAR(64) NOT NULL, lock_until datetime2 NOT NULL, locked_at datetime2 NOT NULL, locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name));# DB2CREATE TABLE shedlock(name VARCHAR(64) NOT NULL PRIMARY KEY, lock_until TIMESTAMP NOT NULL, locked_at TIMESTAMP NOT NULL, locked_by VARCHAR(255) NOT NULL);

Spring Boot集成ShedLock分布式定時任務的實現示例

1.4 配置LockProvider

/** * @description: Shedlock集成Jdbc配置類 * @author: DT * @date: 2021/5/22 0:07 * @version: v1.0 */// 標識該類為配置類@Configuration// //開啟定時器@EnableScheduling// 開啟定時任務鎖,指定一個默認的鎖的時間30秒@EnableSchedulerLock(defaultLockAtMostFor = 'PT30S')public class ShedlockJdbcConfig { /** * 配置鎖的提供者 */ @Bean public LockProvider lockProvider(DataSource dataSource) {return new JdbcTemplateLockProvider(JdbcTemplateLockProvider.Configuration.builder().withJdbcTemplate(new JdbcTemplate(dataSource)).usingDbTime().build()); }}1.5 創(chuàng)建定時Job

/** * @description: 開啟分布式鎖定時任務 * @author: DT * @date: 2021/5/22 0:23 * @version: v1.0 */@Component@CommonsLogpublic class TimeTaskJob { private static Integer count = 1; // @SchedulerLock的作用是保證當前定時任務的方法執(zhí)行時獲得鎖,忽略其他相同任務的執(zhí)行 // name必須要指定,ShedLock就是根據這個name進行相同任務判定的 // name:定時任務的名字,就是數據庫中的主鍵(name) // lockAtMostFor:鎖的最大時間單位為毫秒 // lockAtLeastFor:鎖的最小時間單位為毫秒 /** * 任務1每5秒執(zhí)行一次 * lockAtLeastFor:雖然,定時任務是每隔5秒執(zhí)行一次,但是,分布式鎖定義的是:每次任務要鎖住20秒,20秒是持有鎖的最小時間,必須等20秒后才釋放鎖,并且確保在20秒鐘內,該任務不會運行超過1次; * lockAtMostFor:鎖最大持有時間30秒,表示最多鎖定30秒鐘,主要用于防止執(zhí)行任務的節(jié)點掛掉(即使這個節(jié)點掛掉,在30秒鐘后,鎖也被釋放),一般將其設置為明顯大于任務的最大執(zhí)行時長;如果任務運行時間超過該值(即任務30秒鐘沒有執(zhí)行完),則該任務可能被重復執(zhí)行。 */ @Scheduled(cron = '0/5 * * * * ? ') @SchedulerLock(name = 'testJob1',lockAtLeastFor = '20000', lockAtMostFor = '30000') public void scheduledTask1() {log.info(Thread.currentThread().getName() + '->>>任務1執(zhí)行第:' + (count++) + '次'); } /** * 任務2每5秒執(zhí)行一次 */ @Scheduled(cron = '0/5 * * * * ? ') @SchedulerLock(name = 'testJob2') public void scheduledTask2() {log.info(Thread.currentThread().getName() + '->>>任務2執(zhí)行第:' + (count++) + '次'); }}1.6 主啟動類

@SpringBootApplicationpublic class JdbcApplication { public static void main(String[] args) { SpringApplication.run(JdbcApplication.class, args); }}1.7 執(zhí)行成功分析

可以看到兩個任務交替執(zhí)行,并且我們的count每次自加1都是有序的。但是這里說明一下ShedLock是單線程執(zhí)行的。

Spring Boot集成ShedLock分布式定時任務的實現示例

1.8 修改表名

shedLock支持關系型數據庫,以mysql為例,配置mysql以及表名;shedLock默認表名為shedlock,可以設置自定義表名。

Spring Boot集成ShedLock分布式定時任務的實現示例

總結

核心思想:通過對公用的數據庫中的某個表進行記錄和加鎖,使得同一時間點只有第一個執(zhí)行定時任務并成功在數據庫表中寫入相應記錄的節(jié)點能夠成功執(zhí)行而其他節(jié)點直接跳過該任務。

以上就是Spring Boot集成ShedLock分布式定時任務的實現示例的詳細內容,更多關于Spring Boot集成ShedLock分布式定時任務的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品高清一区二区| 久久国产精品亚洲77777| 鲁大师精品99久久久| 每日更新成人在线视频| 欧美日韩视频一区二区三区| 今天的高清视频免费播放成人| 免费中文字幕日韩欧美| 国产精品成人自拍| 亚洲不卡系列| 久久aⅴ国产紧身牛仔裤| 免费日韩成人| 日韩在线观看不卡| 国产精品美女久久久| 日韩在线免费| 久久五月天小说| 亚欧成人精品| 日本 国产 欧美色综合| 欧美成人午夜| 欧美精品福利| 亚洲欧美网站在线观看| 国产精品亚洲欧美一级在线| 欧美黑人巨大videos精品| 亚洲女同一区| 国产美女一区| www在线观看黄色| 中文日韩欧美| 亚洲二区在线| 精品一区二区三区四区五区| 中文字幕乱码亚洲无线精品一区| 日韩一区亚洲二区| 综合国产精品| 日本综合字幕| 国产麻豆精品久久| 91欧美在线| 精品国产乱码| 一区二区三区国产盗摄| 久久国产88| 亚洲网址在线观看| 亚洲高清不卡| 亚洲免费黄色| 国产精品网址| 狠狠色狠狠色综合日日tαg| 日本不卡视频一二三区| 在线一区免费| 亚洲免费影院| 日本在线视频一区二区| 国产亚洲一区在线| 亚洲精品无播放器在线播放| 激情黄产视频在线免费观看| 精品免费视频| 日韩在线欧美| 精品国产亚洲一区二区在线观看| 免费久久99精品国产| 啪啪亚洲精品| 亚洲一区二区毛片| 另类av一区二区| 国产毛片精品久久| 国产成人精选| 91精品国产乱码久久久久久久| 美女福利一区二区三区| 日韩一区亚洲二区| 久久电影tv| 久久蜜桃av| 免费看一区二区三区| 日韩av中文字幕一区二区| 美女久久久精品| 日韩毛片视频| 久久久777| 精品伊人久久| 成人av三级| 久久久国产精品入口麻豆| 亚洲欧美日韩高清在线| 日本一区二区免费高清| 韩国久久久久久| 最新国产拍偷乱拍精品| 久久精品亚洲人成影院| 日韩国产在线| 蜜桃视频在线观看一区二区| 一本色道精品久久一区二区三区| 免费在线观看精品| 国产亚洲欧美日韩在线观看一区二区 | 中文字幕av亚洲精品一部二部 | 国产精品久久久久9999高清| 首页亚洲欧美制服丝腿| 999精品在线| 国产精久久久| 国产日韩一区二区三区在线播放| 黄色日韩在线| 九九精品调教| 精品一区视频| 亚洲97av| 久久国产三级| 老牛影视一区二区三区| 中文字幕一区二区精品区| 精品国产不卡一区二区| 日韩av中文字幕一区| 久久99久久久精品欧美| 久久精品午夜| 麻豆精品久久久| 国产高清不卡| 国产精品高潮呻吟久久久久| 久久xxx视频| 国产精品www.| 91午夜精品| 欧美日韩水蜜桃| 亚洲精品国产精品粉嫩| 老牛国产精品一区的观看方式| 国产精品久久久久久久久久齐齐 | 羞羞答答国产精品www一本| 日韩大片在线观看| 日韩精品三区四区| 国产欧美日韩视频在线| 久久精品凹凸全集| 国产一区2区在线观看| 久久久久国产| 久久最新视频| 国产农村妇女精品一二区| 日本а中文在线天堂| 美腿丝袜亚洲一区| 国产99在线| 日韩精品免费观看视频| 精品欧美久久| 国产视频亚洲| 亚洲伊人精品酒店| 亚洲资源网站| 欧美日韩亚洲一区| 国产精品亚洲综合在线观看| 国产精品国产一区| 蜜桃视频免费观看一区| 日本不卡一二三区黄网| 欧美精品1区| 亚洲深夜av| 成午夜精品一区二区三区软件| 一本一道久久a久久| 麻豆中文一区二区| 性色一区二区| 亚洲成人不卡| 国产精品videossex久久发布 | 亚洲欧美一级| 亚洲成人二区| 久久精品一区| 亚洲一区国产| 欧美91在线|欧美| 亚洲综合国产| 福利一区和二区| 日本一区免费网站| 综合日韩av| 欧美激情视频一区二区三区在线播放| 国产亚洲人成a在线v网站| 福利一区在线| 日产精品一区二区| 蜜桃久久久久久| 日韩精品免费一区二区夜夜嗨| 国产欧美啪啪| 久久网站免费观看| 国产一区二区久久久久| 六月天综合网| 成人日韩精品| 国产精品久久久久av电视剧| 日韩精品一区二区三区中文| 久久麻豆视频| 亚洲精品免费观看| 在线午夜精品| 午夜一区在线| 国产亚洲一区二区手机在线观看| 精品免费视频| 日韩精品一页| 精品色999| 国产精品调教视频| 免费看黄色91| 欧美成人基地 | 日韩av不卡一区二区| 精品美女在线视频| 亚洲色诱最新| 欧美亚洲一级| 日韩视频久久| 欧美91在线|欧美| 视频国产精品| 久久亚洲成人| 成人午夜在线| 国产精品黄色| 欧美一级网址| 视频一区二区三区中文字幕| av资源中文在线| 日本免费新一区视频| 亚洲一区av| 亚洲免费一区二区| 不卡在线一区| а√天堂8资源在线| 日韩精品一区二区三区中文| 天堂网在线观看国产精品| 日韩在线中文| 99国产精品一区二区| 激情国产在线| 91精品精品| 激情欧美丁香| 99成人超碰| 99xxxx成人网| 国产精品视区| 国产精品一区二区99|