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

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

Spring Boot集成ShedLock分布式定時任務的實現(xiàn)示例

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

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

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

Spring Boot集成ShedLock分布式定時任務的實現(xiàn)示例

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

二、落地實現(xiàn)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 配置數(shù)據(jù)庫連接信息

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數(shù)據(jù)表

# 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分布式定時任務的實現(xiàn)示例

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就是根據(jù)這個name進行相同任務判定的 // name:定時任務的名字,就是數(shù)據(jù)庫中的主鍵(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分布式定時任務的實現(xiàn)示例

1.8 修改表名

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

Spring Boot集成ShedLock分布式定時任務的實現(xiàn)示例

總結

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

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

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99久久亚洲精品| 亚洲风情在线资源| 亚洲精品97| 成人在线网站| 久久免费大视频| 久久视频国产| 在线日韩电影| 午夜久久福利| 亚洲一区不卡| 亚洲一区二区三区无吗| 日本一区二区三区中文字幕| 日本精品在线播放| 国产免费av一区二区三区| 国产精品视频3p| 精品九九久久| 久久中文视频| 在线一区电影| 亚洲毛片在线免费| 国产欧美日韩一级| 国产一区二区三区不卡av| 国产盗摄——sm在线视频| 91精品xxx在线观看| 不卡一区2区| 亚洲精品无播放器在线播放| 国产伦精品一区二区三区视频| 国产精品mv在线观看| 91亚洲国产| 国产综合婷婷| 亚洲天堂av资源在线观看| 日韩和欧美一区二区三区| 国产精品久久久久77777丨| 国产精品久久久久久久久久齐齐| 精品国产鲁一鲁****| 色在线视频观看| 午夜久久99| 中文字幕在线高清| 丝袜美腿一区| av资源亚洲| 日本一区二区三区视频在线看| 亚洲大全视频| 精品国产网站| 亚洲一区av| 精品久久久中文字幕| 国产农村妇女精品一二区| 久久精品免费看| 黄色日韩在线| а√天堂8资源在线| 成人黄色av| 色狠狠一区二区三区| 视频一区二区国产| 日韩欧美视频专区| 亚洲女同中文字幕| 一区二区国产精品| 亚洲一区欧美激情| 激情久久五月| 九九久久国产| 综合干狼人综合首页| 日韩国产精品久久久久久亚洲| 伊人精品一区| 欧美aa在线观看| 精品国产网站| 成人在线观看免费视频| 色爱综合网欧美| 午夜久久tv| 日韩1区2区日韩1区2区| 国产日韩中文在线中文字幕| 欧美激情国产在线| 玖玖玖国产精品| 欧美精品一卡| 久久精品凹凸全集| 国产精品毛片aⅴ一区二区三区| 欧美日韩一区二区高清| 日韩另类视频| 欧美日本精品| 国产极品久久久久久久久波多结野| 首页国产欧美日韩丝袜| 99国产精品视频免费观看一公开 | 蜜臀国产一区二区三区在线播放 | 欧美/亚洲一区| 久久久精品久久久久久96| 青青草国产成人99久久| 国产欧美丝祙| 欧美日韩国产在线观看网站| 久久伊人国产| 亚洲欧美日韩国产| 97se亚洲| 久久成人一区| 久久国产日韩| 福利一区视频| 国产亚洲一区二区三区啪| 91国内精品| 丝袜诱惑制服诱惑色一区在线观看| 日韩大片在线| 麻豆视频一区| 国产日韩欧美中文在线| 亚洲精品乱码| 国产亚洲精品久久久久婷婷瑜伽| 中文一区一区三区高中清不卡免费| 中文字幕免费一区二区| 久久精品高清| 麻豆精品99| 国产伦理一区| 欧美视频二区| 色综合视频一区二区三区日韩 | 最新日韩av| 国产v综合v| 日韩国产一区二区三区| 高清一区二区| 国产在线不卡一区二区三区| 国产精品欧美在线观看| 日本成人在线视频网站| 色婷婷成人网| 伊人久久一区| 欧美综合二区| 91高清一区| 欧美1级日本1级| 欧美亚洲国产精品久久| 日韩欧美一区二区三区在线观看 | 久久亚洲国产| 亚洲四虎影院| 久久久久国产精品一区三寸| 日韩中文首页| 国产精品v一区二区三区| 久久激情网站| 天堂√8在线中文| 国产精品啊啊啊| 久久av资源| 麻豆国产一区| 成人在线视频中文字幕| 久久只有精品| 美女精品久久| 成午夜精品一区二区三区软件| 97在线精品| 欧美精选视频一区二区| 99久久精品网| 国产精品外国| 蜜桃传媒麻豆第一区在线观看| 蜜桃传媒麻豆第一区在线观看| 噜噜噜久久亚洲精品国产品小说| 国产模特精品视频久久久久| 综合国产精品| 国产精品乱战久久久| 另类欧美日韩国产在线| 精品国产aⅴ| 久久精品123| 99国产精品视频免费观看一公开| 亚洲一区二区三区高清| 亚洲精品婷婷| 国产麻豆精品| 国产美女高潮在线| 久久人人精品| 免费看日韩精品| 日韩国产欧美在线视频| 欧美一级二级三级视频| 麻豆精品新av中文字幕| 婷婷激情一区| 亚洲欧美久久久| 日韩**一区毛片| 国产精品久久久久77777丨| 国产中文在线播放| 久久国产中文字幕| 免费人成精品欧美精品| 国产欧美88| 91精品蜜臀一区二区三区在线| 99在线精品免费视频九九视| 综合五月婷婷| 岛国精品一区| 五月天综合网站| 丝袜美腿成人在线| 国产精选久久| 日韩精品欧美| 日韩有吗在线观看| 欧美国产小视频| 亚洲一区欧美激情| 免费日韩一区二区三区| 99精品一区| 青草久久视频| 久久国产欧美| 国产欧美一区二区三区精品观看| 日韩成人精品一区| 水野朝阳av一区二区三区| 欧美成人aaa| 99国产精品久久久久久久 | 在线精品视频一区| 蜜桃精品视频| 香蕉久久国产| 老鸭窝一区二区久久精品| 国产综合色产| 国产精品欧美一区二区三区不卡| 91精品精品| 欧美精品中文字幕亚洲专区| 四虎影视精品| **爰片久久毛片| 欧美在线资源| 久久的色偷偷| 每日更新成人在线视频| 国产精品天天看天天狠| 婷婷激情综合| 麻豆91精品视频| 蜜臀va亚洲va欧美va天堂|