前言
在分布式的场景下,SpringBoot程序以集群的方式部署,这些程序中运行着相同的代码,如果其中有定时任务的话,所有的程序都会运行该任务,这样就会导致任务的重复执行。

由于所有的定时任务在集群的不同节点值中,所以需要一个专属的数据存储空间(通常使用Nosql数据库)来记录每一个定时任务的名称以及当前执行任务的主机与任务执行时间,而后在集群中不同的节点执行任务前会查看数据存储中是否存在指定任务的执行记录,如果没有记录则可以启动该节点任务,如果已经有此任务的相关信息,则代表任务已经执行,则跳过该节点任务。
ShedLock是一个在分布式应用环境下使用的定时任务管理框架,主要目的是解决在分布式环境中多个实例相同的定时任务在同一时间点的重复执行问题。
简单来说,ShedLock可以保证定时任务在集群中只执行一次。
一、基础应用
1.1 引入依赖
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
<version>4.29.0</version>
</dependency>
使用redis存储任务的调度记录,所以需要引入redis相关依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-provider-redis-spring</artifactId>
<version>4.29.0</version>
</dependency>
引入连接池依赖。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2

最低0.47元/天 解锁文章
2465

被折叠的 条评论
为什么被折叠?



