怎么使用弹簧引导集成夏德罗克分布式定时任务

  介绍

这篇文章给大家分享的是有关怎么使用弹簧引导集成夏德罗克分布式定时任务的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、夏德罗克是什么?

以下是夏德罗克锁提供者,通过外部存储实现锁,由下图可知外部存储集成的库还是很丰富的

怎么使用弹簧引导集成夏德罗克分布式定时任务

本篇教程我们基于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

怎么使用弹簧引导集成夏德罗克分布式定时任务