SpringBoot使用ShedLock调度任务

前言

在分布式的场景下,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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值