spring 分布式锁 SchedulerLock,整合redis冲突、jdbc异常问题
简介
ShedLock的作用,确保任务在同一时刻最多执行一次。如果一个任务正在一个节点上执行,则它将获得一个锁,该锁将阻止从另一个节点(或线程)执行同一任务。如果一个任务已经在一个节点上执行,则在其他节点上的执行不会等待,只需跳过它即可 。
ShedLock使用Mongo,JDBC数据库,Redis,Hazelcast,ZooKeeper或其他外部存储进行协调,即通过外部存储来实现锁机制。
用法
- 启用和配置计划的锁定
- 注释您的计划任务
- 配置锁提供者
此处以jdbc数据库方式为例,如需要使用其他外部存储方式,对应修改shedlock-provider。
启用和配置计划的锁定
- 导入schedulerLock项目
gradle方式
// shedlock 项目 , 2.1.0稳定版
compile('net.javacrumbs.shedlock:shedlock-provider-jdbc-template:2.1.0')
// JDBC ,匹配shedlock的2.2.0版
compile('net.javacrumbs.shedlock:shedlock-spring:2.2.0')
Maven方式
// shedlock 项目 , 2.1.0稳定版
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
<version>2.1.0</version>
</dependency>
// JDBC ,匹配shedlock的2.2.0版
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-provider-jdbc-template</artifactId>
<version>2.2.0</version