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

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

SpringBoot 集成 ShedLock 分布式鎖的示例詳解

瀏覽:15日期:2023-12-13 09:57:18
目錄一:ShedLock 簡介二:配置maven 依賴三:SchedulerLock 基于 Redis 的配置四:在啟動類中添加 @EnableScheduling 標簽五:test 測試案例一:ShedLock 簡介

ShedLock是一個在分布式環境中使用的定時任務框架,用于解決在分布式環境中的多個實例的相同定時任務在同一時間點重復執行的問題。ShedLock確保計劃的任務最多同時執行一次。如果一個任務正在一個節點上執行,它會獲得一個鎖,該鎖將阻止從另一個節點(或線程)執行同一任務。請注意,如果一個任務已經在一個節點上執行,則在其他節點上的執行不會等待,只是將其跳過。。簡單來說,ShedLock本身只做一件事情:保證一個任務最多同時執行一次。所以如官網所說的,ShedLock不是一個分布式調度器,只是一個鎖!

注意:ShedLock支持Mongo,Redis,Hazelcast,ZooKeeper以及任何帶有JDBC驅動程序的東西。本例子使用的是基于Redis的方式。之所以不適用基于jdbc存儲的主要原因是考慮到大量數據下的數據庫壓力的原因,若本身基于jdbc等,可直接參考官網給出的提示:

創建對應的表結構。

CREATE TABLE shedlock( name VARCHAR(64), lock_until TIMESTAMP(3) NULL, locked_at TIMESTAMP(3) NULL, locked_by VARCHAR(255), PRIMARY KEY (name))二:配置maven 依賴

<dependency> <groupId>net.javacrumbs.shedlock</groupId> <artifactId>shedlock-spring</artifactId> <version>2.3.0</version></dependency><dependency> <groupId>net.javacrumbs.shedlock</groupId> <artifactId>shedlock-provider-redis-spring</artifactId> <version>2.3.0</version></dependency><!--spring2.0集成redis所需common-pool2 --><!-- 必須加上,jedis依賴此 若項目中已經引入jedis 請忽略此步驟--><!-- spring boot 2.0 的操作手冊有標注 大家可以去看看 地址是:https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/ --><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId></dependency>

添加jedis 依賴 若項目中已經引入jedis 請忽略此步驟

<!--spring2.0集成redis所需common-pool2 --><!-- 必須加上,jedis依賴此 若項目中已經引入jedis 請忽略此步驟--><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId></dependency>三:SchedulerLock 基于 Redis 的配置

配置 lockProvider 并且開啟 @EnableSchedulerLock 標簽

import net.javacrumbs.shedlock.core.LockProvider;import net.javacrumbs.shedlock.provider.redis.spring.RedisLockProvider;import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;/** * @Description SchedulerLock 基于 Redis 的配置 * @Author * @Date 2020/2/22 18:27 **/@Configuration//defaultLockAtMostFor 指定在執行節點結束時應保留鎖的默認時間使用ISO8601 Duration格式//作用就是在被加鎖的節點掛了時,無法釋放鎖,造成其他節點無法進行下一任務//這里默認55s//關于ISO8601 Duration格式用的不到,具體可上網查詢下相關資料,應該就是一套規范,規定一些時間表達方式@EnableSchedulerLock(defaultLockAtMostFor = 'PT55S')public class ShedLockRedisConfig { @Value('${spring.profiles.active}') private String env; @Bean public LockProvider lockProvider(RedisConnectionFactory connectionFactory) {//環境變量 -需要區分不同環境避免沖突,如dev環境和test環境,兩者都部署時,只有一個實例進行,此時會造成相關環境未啟動情況return new RedisLockProvider(connectionFactory, env); }}四:在啟動類中添加 @EnableScheduling 標簽

注意,要在啟動類上添加 @EnableScheduling ,表明開啟定時器服務。若不加定時器是不會起效的。

@SpringBootApplication@EnableSchedulingpublic class EpidemicMessageApplication { public static void main(String[] args) {SpringApplication.run(EpidemicMessageApplication.class, args); }}五:test 測試案例

//區分服務 @Value('${server.port}') private String port;@Scheduled(cron = '0 */1 * * * ?') /** * lockAtLeastForString的作用是為了防止在任務開始之初由于各個服務器同名任務的服務器時間差,啟動時間差等這些造成的一些問題,有了這個時間設置后, * 就可以避免因為上面這些小的時間差造成的一些意外,保證一個線程在搶到鎖后,即便很快執行完,也不要立即釋放,留下一個緩沖時間。 * 這樣等多個線程都啟動后,由于任務已經被鎖定,其他沒有獲得鎖的任務也不會再去搶鎖。注意這里的時間不要設置幾秒幾分鐘,盡量大些 *lockAtMostForString 這個設置的作用是為了防止搶到鎖的那個線程,因為一些意外死掉了,而鎖又始終不被釋放。 * 這樣的話,雖然當前執行周期雖然失敗了,但以后的執行周期如果這里一直不釋放的話,后面就永遠執行不到了。 * 它的目的不在于隱藏任務,更重要的是,釋放鎖,并且查找解決問題。 *至于是否帶有string后綴,只是2種表達方式,數字類型的就是毫秒數,字符串類型的就有自己固定的格式 ,例如:PT30S 30s時間設置,單位可以是S,M,H */ @SchedulerLock(name = 'scheduledController_notice', lockAtLeastForString = 'PT15M', lockAtMostForString = 'PT14M') public StandardResult notice() {try { logger.info(port + '- 執行定時器 scheduledController_notice'); return StandardResult.ok();} catch (Exception e) { logger.error('異常信息:', e); return StandardResult.faild('異常信息', e);} }

SchedulerLock注解說明@SchedulerLock注解一共支持五個參數,分別是

name:用來標注一個定時服務的名字,被用于寫入數據庫作為區分不同服務的標識,如果有多個同名定時任務則同一時間點只有一個執行成功lockAtMostFor:成功執行任務的節點所能擁有獨占鎖的最長時間,單位是毫秒mslockAtMostForString:成功執行任務的節點所能擁有的獨占鎖的最長時間的字符串表達,例如“PT14M”表示為14分鐘,單位可以是S,M,HlockAtLeastFor:成功執行任務的節點所能擁有獨占所的最短時間,單位是毫秒mslockAtLeastForString:成功執行任務的節點所能擁有的獨占鎖的最短時間的字符串表達,例如“PT14M”表示為14分鐘,單位可以是S,M,H

到此這篇關于SpringBoot 集成 ShedLock 分布式鎖的文章就介紹到這了,更多相關SpringBoot 分布式鎖ShedLock內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人三级高清视频在线看| 久久精品影视| 亚洲一二av| 亚洲深深色噜噜狠狠爱网站| 中文字幕免费一区二区| 日本欧美一区二区| 久久成人福利| 久久精品二区亚洲w码| 日韩免费av| 午夜在线视频一区二区区别 | 日精品一区二区三区| 日本午夜精品一区二区三区电影| 欧美精品导航| 99久精品视频在线观看视频| aa亚洲婷婷| 久久激情五月婷婷| 色一区二区三区四区| 99亚洲视频| 国产精品亲子伦av一区二区三区 | 首页国产欧美日韩丝袜| 欧美日韩亚洲一区三区| 日本蜜桃在线观看视频| 国产亚洲在线观看| 欧美韩一区二区| 99视频精品全部免费在线视频| 一区二区三区午夜视频| 麻豆91精品91久久久的内涵| 国内精品99| 国产精品传媒麻豆hd| 国产高清一区| 国产精品亚洲综合久久| 欧美va天堂| 国产欧美日韩在线观看视频| 欧美日韩免费看片| 亚洲人成亚洲精品| 日韩国产激情| 日产欧产美韩系列久久99| 精品国产第一福利网站| 亚洲字幕久久| 日韩综合精品| 国产欧美日韩在线一区二区| 亚洲欧美综合| 精品99在线| 亚洲精品四区| 五月综合激情| 精品国产三区在线| 亚洲+小说+欧美+激情+另类| 国产精品高颜值在线观看| 蜜臀av国产精品久久久久| 91欧美在线| 国产欧美久久一区二区三区| 不卡在线一区二区| 国产va在线视频| 日韩成人一级| 久久99伊人| 久久精选视频| 精品久久一区| 国产精品hd| 日韩动漫一区| 亚洲一级大片| 亚洲在线一区| 美女亚洲一区| 亚洲一级少妇| 麻豆精品一区二区综合av| 日韩在线卡一卡二| 久久在线免费| 成人免费网站www网站高清| 欧美国产极品| 国产精品一区二区精品| 日产欧产美韩系列久久99| 99在线观看免费视频精品观看| 中文字幕在线看片| 美女免费视频一区| 久久激五月天综合精品| 日韩精品一页| 亚洲理论在线| 一区二区三区网站| 香蕉久久国产| 欧美日韩国产高清| 欧洲毛片在线视频免费观看| 久久久久欧美精品| 日韩高清不卡| 香蕉久久精品| 蜜桃国内精品久久久久软件9| 久久九九精品| 激情偷拍久久| 激情综合激情| 国产亚洲毛片| 久久午夜精品一区二区| 另类激情亚洲| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产一区导航| 视频一区二区三区入口| 宅男噜噜噜66国产日韩在线观看| 91精品91| 自拍自偷一区二区三区| 中文字幕一区二区精品区| 香蕉久久一区| 欧美亚洲三级| 精品日韩一区| 桃色一区二区| 欧美日韩国产一区精品一区| 国产精品毛片在线| 综合一区在线| 国产日韩欧美中文在线| 免费在线播放第一区高清av| 日韩av在线中文字幕| av在线最新| 亚洲福利专区| 丝瓜av网站精品一区二区| 日韩专区视频网站| 麻豆国产一区| 久久精品官网| 亚洲精品一级| 国产精品magnet| 亚洲1234区| 日韩精品一区第一页| 欧美日韩18| 国产不卡人人| 先锋影音国产一区| 国产亚洲一区| 电影亚洲精品噜噜在线观看| 9久re热视频在线精品| 最近国产精品视频| 久久只有精品| 国精品一区二区三区| 亚洲美女久久| 超碰成人av| 蜜臀91精品一区二区三区| 国产精品成人3p一区二区三区| 快播电影网址老女人久久| 久热精品在线| 色婷婷亚洲mv天堂mv在影片| 国产精品婷婷| 久久97视频| 麻豆精品91| 成人精品动漫一区二区三区| 中文久久精品| 国产精品日本一区二区三区在线| 日韩高清中文字幕一区二区| 亚洲区国产区| 日韩中文在线播放| 日韩高清在线观看一区二区| 日韩在线不卡| 国产日韩一区二区三区在线| 久久久精品久久久久久96| 91成人在线网站| 欧美日韩一二三四| 日韩在线麻豆| 亚洲高清成人| 欧美极品中文字幕| 久久香蕉精品| 亚洲www免费| 日韩国产精品久久久久久亚洲| 日韩欧美网址| 国产激情综合| 综合一区二区三区| 亚洲不卡av不卡一区二区| 国产图片一区| 久热精品在线| 99久久99久久精品国产片果冰| 久久国产精品免费精品3p| 欧美高清不卡| 成年男女免费视频网站不卡| 日韩动漫一区| 制服诱惑一区二区| 日韩久久精品| 久久一区国产| 日韩国产在线观看一区| 午夜久久影院| 秋霞国产精品| 成人精品国产亚洲| 国产精品一区二区中文字幕| 视频在线在亚洲| 在线日韩一区| 午夜久久中文| 免费视频一区二区三区在线观看| 综合色一区二区| 亚洲一区二区网站| 亚洲激情中文在线| 99热精品久久| 成人福利av| 国精品产品一区| 国产日韩欧美中文在线| 亚洲三级网址| 免费看欧美美女黄的网站| 精品一区在线| 99精品美女| 999精品色在线播放| 亚洲1234区| 日韩国产欧美| 日韩欧美午夜| 丝袜美腿诱惑一区二区三区 | 91成人精品视频| 成人日韩精品| 国产一区二区三区久久| 免费视频一区二区三区在线观看| 久久精品99国产国产精| 欧美一级二区| 国产欧美视频在线|