介绍二、落地实现
1.1引入依赖包
这篇文章给大家分享的是有关怎么使用弹簧引导集成夏德罗克分布式定时任务的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、夏德罗克是什么?
以下是夏德罗克锁提供者,通过外部存储实现锁,由下图可知外部存储集成的库还是很丰富的
本篇教程我们基于JdbcTemplate存储为例来使用夏德罗克锁。
二、落地实现
1.1引入依赖包
夏德罗克所需依赖包:
& lt; dependency> ,,,& lt; groupId> net.javacrumbs.shedlock ,,,& lt; artifactId> shedlock-spring ,,,& lt; version> 4.23.0 & lt;/dependency> ,& lt; !——每个外部存储实例所需依赖包不一样,这里是jdbc——比; & lt; dependency> ,,,& lt; groupId> net.javacrumbs.shedlock ,,,& lt; artifactId> shedlock-provider-jdbc-template ,,,& lt; version> 4.23.0 & lt;/dependency>
JdbcTemplate依赖包:
& lt; dependency> ,,,& lt; groupId> org.springframework.boot ,,,& lt; artifactId> spring-boot-starter-jdbc & lt;/dependency> & lt; dependency> ,,,& lt; groupId> mysql ,,,& lt; artifactId> mysql-connector-java ,,,& lt; scope> runtime & lt;/dependency>
web工程依赖包:
& lt; dependency> ,,,& lt; groupId> org.springframework.boot ,,,& lt; artifactId> spring-boot-starter-web & lt;/dependency>
1.2配置数据库连接信息
服务器: ,,端口:9999 春天: 数据源:才能 ,,,url:, jdbc: mysql://192.168.31.158:3306/testjdbc ? useUnicode=true& characterEncoding=UTF-8& serverTimezone=亚洲/上海 ,,,用户名:根 ,,,密码:123456 ,,,driver-class-name: com.mysql.cj.jdbc.Driver ,,,类型:,com.mysql.cj.jdbc.MysqlDataSource
1.3创建Mysql数据表
#, Mysql, MariaDB CREATE TABLE 夏德罗克(name VARCHAR (64), NOT 空,,lock_until 时间戳(3),NOT 空, ,,,locked_at 时间戳(3),NOT NULL DEFAULT CURRENT_TIMESTAMP (3),, locked_by VARCHAR (255), NOT 空,,PRIMARY KEY (名称)); #,Postgres CREATE TABLE 夏德罗克(name VARCHAR (64), NOT 空,,lock_until TIMESTAMP NOT 空, ,,,locked_at TIMESTAMP NOT 空,,locked_by VARCHAR (255), NOT 空,,PRIMARY KEY (名称)); #,甲骨文 CREATE TABLE 夏德罗克(name VARCHAR (64), NOT 空,,lock_until 时间戳(3),NOT 空, ,,,locked_at 时间戳(3),NOT 空,,locked_by VARCHAR (255), NOT 空,,PRIMARY KEY (名称)); #,小姐SQL CREATE TABLE 夏德罗克(name VARCHAR (64), NOT 空,,lock_until datetime2 NOT 空, ,,,locked_at datetime2 NOT 空,,locked_by VARCHAR (255), NOT 空,,PRIMARY KEY (名称)); #,DB2 CREATE TABLE 夏德罗克(name VARCHAR (64), NOT NULL PRIMARY 关键,,lock_until TIMESTAMP NOT 空, ,,,locked_at TIMESTAMP NOT 空,,locked_by VARCHAR (255), NOT 零);
1.4配置LockProvider
/* * ,* @description:夏德罗克集成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 数据源),{ ,,,,,,,return new JdbcTemplateLockProvider ( ,,,,,,,,,,,,,,,JdbcTemplateLockProvider.Configuration.builder () null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null怎么使用弹簧引导集成夏德罗克分布式定时任务